Aprendizado de Máquina para Negociação.
Oferecido na Georgia Tech como CS 7646.
Programa de Nanodegree.
Carros voadores & amp; Vôo Autônomo.
Domine habilidades de engenharia de software de voo autônomo prontas para o trabalho à medida que você enfrenta desafios avançados, escreve código real para aeronaves reais e desenvolve uma compreensão sistêmica da pilha completa do Flying Car.
Acelere sua carreira com a credencial que leva você rapidamente ao sucesso no trabalho.
Sobre este curso.
Este curso apresenta aos alunos os desafios do mundo real de implementar estratégias de negociação baseadas em aprendizado de máquina, incluindo as etapas algorítmicas desde a coleta de informações até as ordens do mercado. O foco está em como aplicar abordagens de aprendizado de máquina probabilísticas às decisões de negociação. Consideramos abordagens estatísticas como regressão linear, KNN e árvores de regressão e como aplicá-las às situações reais de negociação de ações.
Custo do Curso
Aprox. 4 meses.
Nível de habilidade.
Incluído no curso.
Conteúdo rico de aprendizado.
Ministrado por profissionais da indústria.
Comunidade de Suporte ao Aluno.
Junte-se ao caminho para a grandeza.
Este curso gratuito é o primeiro passo para uma nova carreira no Flying Cars & amp; Programa de Nanodegio de Voo Autônomo.
Curso Livre.
Aprendizado de Máquina para Negociação.
Melhore seu conjunto de habilidades e impulsione sua contratação por meio de aprendizado inovador e independente.
Programa de Nanodegree.
Carros voadores & amp; Vôo Autônomo.
Acelere sua carreira com a credencial que leva você rapidamente ao sucesso no trabalho.
Leads do curso.
Tucker Balch.
Arpan Chakraborty.
O que você aprenderá
Este curso é composto por três mini-cursos:
Mini-curso 1: Manipulando Dados Financeiros em Python Mini-curso 2: Investimento Computacional Mini-curso 3: Algoritmos de Aprendizado de Máquina para Negociação.
Cada mini-curso consiste em cerca de 7 a 10 lições curtas. Atribuições e projetos são intercalados.
Queda 2015 Estudantes da OMS: Haverá dois testes - um de meio de aula após o minicurso 2 e um exame final.
Pré-requisitos e requisitos.
Os estudantes devem ter fortes habilidades de codificação e alguma familiaridade com os mercados de ações. Nenhuma experiência financeira ou de aprendizado de máquina é assumida.
Observe que este curso atende alunos com foco em ciência da computação, bem como alunos de outras áreas, como engenharia de sistemas industriais, gerenciamento ou matemática, que têm experiências diferentes. Todos os tipos de estudantes são bem vindos!
Os tópicos do ML podem ser & quot; revisão & quot; para alunos do CS, enquanto partes de finanças serão revisadas para estudantes de finanças. No entanto, mesmo que você tenha experiência nesses tópicos, descobrirá que os consideramos de uma maneira diferente da que você poderia ter visto antes, em particular com um olho voltado para a implementação da negociação.
A programação será principalmente em Python. Vamos fazer uso pesado de bibliotecas de computação numérica como o NumPy e o Pandas.
Em artigos anteriores, nós definimos alguns dos termos sendo usados ultimamente como "aprendizado de máquina" # 8221; e & # 8220; inteligência artificial & # 8220 ;. Essas tecnologias disruptivas logo mudarão o mundo como o conhecemos. Enquanto alguns especialistas previram que estávamos a anos de distância de um computador que poderia bater um especialista humano em "Go", essa conquista foi anunciada recentemente. Se uma aprendizagem profunda & # 8220; & # 8221; O programa agora pode vencer um jogo que tem mais movimentos possíveis do que átomos no universo conhecido, então o que nos impede de liberá-lo no mercado de ações e fazer milhões?
A ideia de usar computadores para negociar ações não é novidade. O comércio algorítmico (também conhecido como negociação de algo ou negociação de caixa preta, que é um subconjunto da negociação de algoritmos) existe há mais de uma década e está ganhando popularidade rapidamente. Aqui está uma olhada na negociação algorítmica como uma porcentagem do volume de mercado:
Fonte: Morton Glantz, Robert Kissell. Modelagem de Riscos Multi-Ativos: Técnicas para uma Economia Global em uma Era de Negociação Eletrônica e Algorítmica.
Se essa tendência continuar, então isso significa que hoje mais de 90% das negociações estão sendo conduzidas por programas de computador. Uma coisa a notar sobre negociação algorítmica é que ela está se movendo na direção de tempos de espera cada vez menores. A negociação de alta frequência (HFT) é um subconjunto de negociações algorítmicas em que as ações são compradas e depois vendidas em frações de segundo. Essa estratégia é uma forma de arbitragem na qual o algoritmo HFT detecta uma discrepância de preço e depois o capitaliza rapidamente. Como seria de esperar, os lucros de negociação da HFT estão a tornar-se cada vez menores, mas o volume de negócios continua a dominar o mercado global:
Agora que sabemos sobre negociação algorítmica e HFT, como o aprendizado de máquina ou o aprendizado profundo entram em ação? Para responder a essa pergunta, a variável importante a ser levada em consideração é a duração. Embora a negociação de algoritmos e de HFT realize negociações de curta duração, torna-se muito mais difícil capturar & alpha & # 8221; quando você começa a aumentar o tempo. A realidade é que alguns dos maiores fundos de hedge do mundo já estão espalhados por todo este espaço e têm capturado o alpha em muitas durações há muito tempo usando o aprendizado de máquina.
No início do ano passado, a Bridgewater Associates, que tem US $ 150 bilhões em ativos sob gestão (AUM), iniciou uma nova unidade de inteligência artificial liderada por David Ferrucci, que liderou o desenvolvimento do Watson da IBM. Depois de trabalhar na IBM por 17 anos, ele foi caçado pela Bridgewater em 2012.
Outra empresa chamada Renaissance Technologies tem US $ 65 bilhões em AUM e é dito ter "o melhor departamento de física e matemática do mundo". O Medallion Fund da Renaissance, executado principalmente para funcionários da empresa, tem um dos melhores recordes em termos de histórico de investimentos, tendo retornado 35% anualizado em 20 anos. Os dois co-CEOs da Renaissance foram contratados pela IBM Research em 1993, onde estavam trabalhando em programas de reconhecimento de idioma.
Com US $ 32 bilhões sob gestão, a Two Sigma Investments é conhecida por usar a inteligência artificial e aprendizado de máquina como parte fundamental de sua estratégia. Um co-fundador fez seu doutorado em inteligência artificial no MIT e o outro foi medalhista de prata da Olimpíada Internacional de Matemática. Ser um profissional de finanças não é um requisito para trabalhar nesta empresa.
Embora os fundos de hedge como esses 3 sejam pioneiros no uso de aprendizado de máquina para estratégias de negociação de ações, há algumas startups jogando nesse espaço também. A Binatix é uma empresa de trading de aprendizagem profunda que saiu do modo stealth em 2014 e afirma ser bem lucrativa, tendo usado sua estratégia por mais de três anos. A Aidyia é um fundo de hedge baseado em Hong Kong, lançado em 2015, que negocia ações americanas e faz todas as ações com inteligência artificial, sem necessidade de intervenção humana. A Senciente, outra empresa de aprendizagem profunda que discutimos anteriormente, desenvolveu um operador de inteligência artificial que foi bem-sucedido o suficiente para considerar a possibilidade de transformá-lo em uma empresa de comercialização de ativos ou uma empresa de gestão de ativos.
Se houver uma startup que se mostre promissora nesse espaço, você pode apostar que os 3 fundos de hedge bem estabelecidos que discutimos sabem disso. Se você tivesse um algoritmo de aprendizado de máquina que gerasse alfa, você diria ao mundo sobre isso? Mais provável que não. Mas então, como você levantaria o capital necessário para obter algum dinheiro da sua estratégia? Empresas como a Bridgewater podem ser tão ágeis quanto qualquer startup e, ao mesmo tempo, ter US $ 150 bilhões em capital para jogar. É difícil competir se você for uma startup que está tentando obter financiamento. Se você está procurando investidores, precisa divulgar o que está fazendo. A palavra viaja rápido. Não é difícil ver fundos de hedge como Bridgewater roubando talentos de startups de IA que estão tentando jogar neste espaço e rapidamente descobrir o que estão fazendo.
Para os investidores de varejo aproveitarem o aprendizado de máquina para negociação de ações, você tem algumas orientações a seguir. Para investidores de varejo de patrimônio líquido ultra alto, você pode investir seu dinheiro em um dos fundos de hedge usando AI como Bridgewater ou Renaissance. Para aqueles de nós que não têm uma quantidade tão grande de capital, podemos esperar que empresas de aprendizado profundo, como a Sentient, tornem-se públicas ou sejam adquiridas e depois invistam nesses veículos. Nós vamos ficar de olho neste espaço, porque, francamente, é simplesmente fascinante.
Se você pagar mais de US $ 4,95 por transação, estará pagando demais. A Ally Invest é uma das corretoras de taxas mais baixas, por isso você gasta menos dinheiro em taxas de transação e mais em ações. Com mais de 30 operações por trimestre, a queda é ainda menor, para US $ 3,95 por operação. Abra uma conta e comece a negociar hoje.
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: 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 explorarei 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 ideais 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 as movimentações de preço previstas em 50 buckets que dependiam do intervalo em que o valor do indicador caiu. Isso gerou previsões exclusivas para cada bucket 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 em qualquer nível de preço estiver acima de um certo limite, isso significa que o meu 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 simples 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 que uma posição foi inserida - Em um escritório comercial, é muito 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á vencedores. 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 que meu programa realmente tinha uma vantagem era um objetivo 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é atingir o 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.
Forex Mecânico
Negociação no mercado de câmbio usando estratégias de negociação mecânicas.
Machine Learning em Forex Trading: Por que muitos acadêmicos estão fazendo tudo errado.
Construir estratégias de aprendizado de máquina que possam obter resultados decentes sob condições reais de mercado sempre foi um desafio importante no comércio algorítmico. Apesar da grande quantidade de interesse e das incríveis recompensas em potencial, ainda não há publicações acadêmicas capazes de mostrar bons modelos de aprendizado de máquina que possam enfrentar com sucesso o problema de negociação no mercado real (para o melhor de meu conhecimento, postar um comentário se você tem um e eu ficarei mais do que feliz em lê-lo). Embora muitos artigos publicados pareçam mostrar resultados promissores, é frequente que esses artigos caiam em uma variedade de problemas de viés estatístico que tornam o real sucesso de mercado de suas estratégias de aprendizado de máquina altamente improvável. No post de hoje eu vou falar sobre os problemas que eu vejo na pesquisa acadêmica relacionada com o aprendizado de máquina no Forex e como eu acredito que esta pesquisa poderia ser melhorada para gerar informações muito mais úteis para as comunidades acadêmicas e comerciais.
A maioria das armadilhas no projeto de estratégia de aprendizado de máquina ao fazer operações de Forex é inevitavelmente herdada do mundo dos problemas determinísticos de aprendizagem. Ao construir um algoritmo de aprendizado de máquina para algo como reconhecimento de face ou reconhecimento de letras, há um problema bem definido que não muda, que geralmente é resolvido construindo um modelo de aprendizado de máquina em um subconjunto de dados (um conjunto de treinamento) e testando se O modelo foi capaz de resolver corretamente o problema usando o lembrete dos dados (um conjunto de testes). É por isso que você tem alguns conjuntos de dados famosos e bem estabelecidos que podem ser usados para estabelecer a qualidade das técnicas de aprendizado de máquina recém-desenvolvidas. O ponto chave aqui, no entanto, é que os problemas inicialmente enfrentados pelo aprendizado de máquina eram, em grande parte, determinísticos e independentes do tempo.
Ao entrar na negociação, a aplicação dessa mesma filosofia gera muitos problemas relacionados tanto ao caráter parcialmente não determinístico do mercado quanto à sua dependência temporal. O simples ato de tentar selecionar conjuntos de treinamento e testes introduz uma quantidade significativa de viés (um viés de seleção de dados) que cria um problema. Se a seleção for repetida para melhorar os resultados no conjunto de testes & # 8211; o que você deve supor acontece em pelo menos alguns casos & # 8211; então o problema também adiciona uma grande quantidade de viés de mineração de dados. Toda a questão de se fazer um único exercício de treinamento / validação também gera um problema relacionado à maneira como esse algoritmo deve ser aplicado na negociação ao vivo. Por definição, a negociação ao vivo será diferente, já que a seleção de conjuntos de treinamento / teste precisa ser reaplicada a dados diferentes (já que o conjunto de testes é realmente um dado desconhecido). O viés inerente à seleção inicial do período in-sample / out-of-sample e a falta de quaisquer regras testadas para negociação sob dados desconhecidos faz com que tais técnicas falhem comumente em negociações ao vivo. Se um algoritmo for treinado com dados de 2000-2012 e tiver sido validado com dados de 2012-2015, não há razão para acreditar que o mesmo sucesso ocorrerá se treinado em dados de 2003-2015 e depois negociado de 2015 a 2017, os conjuntos de dados são muito diferentes na natureza.
O sucesso do algoritmo de medição também é um problema muito relevante aqui. Inevitavelmente, os algoritmos de aprendizado de máquina usados para o comércio devem ser medidos em termos de mérito por sua capacidade de gerar retornos positivos, mas alguma literatura mede o mérito de novas técnicas algorítmicas, tentando avaliar sua capacidade de obter previsões corretas. As previsões corretas não são necessariamente iguais às negociações lucrativas, como você pode ver facilmente ao criar classificadores binários. Se você tentar prever a direção da próxima vela, ainda poderá sofrer uma perda se estiver quase certo em pequenas velas e errado em velas maiores. De fato, a maior parte desse tipo de classificadores & # 8211; a maioria daqueles que não trabalham & # 8211; acabam prevendo a direcionalidade com uma precisão acima de 50%, mas não acima do nível necessário para superar as comissões que permitiriam a lucrativa troca de opções binárias.
Para construir estratégias que são, na maior parte, livres dos problemas acima, sempre defendi uma metodologia na qual o algoritmo de aprendizado de máquina é retreinado antes de tomar qualquer decisão de treinamento. Usando uma janela móvel para treinamento e nunca tomando mais de uma decisão sem reciclar todo o algoritmo, podemos nos livrar do viés de seleção inerente à escolha de um único conjunto dentro da amostra / fora da amostra. Dessa maneira, todo o teste é uma série de exercícios de treinamento / validação que garantem que o algoritmo de aprendizado de máquina funcione mesmo sob conjuntos de dados de treinamento tremendamente diferentes. Eu também defendo a medição do desempenho de backtesting real para medir o mérito de um algoritmo de aprendizado de máquina e, além disso, eu diria até que nenhum algoritmo pode valer seu sal sem ser provado sob condições reais fora da amostra. . Desenvolver algoritmos dessa maneira é muito mais difícil e eu não encontrei um único artigo acadêmico que siga este tipo de abordagem (se eu perdi, fique à vontade para postar um link para que eu possa incluir um comentário!).
Isso não significa que esta metodologia seja completamente livre de problemas, no entanto, ainda está sujeita aos problemas clássicos relevantes para todos os exercícios de construção de estratégia, incluindo viés de ajuste de curva e viés de mineração de dados. É por isso que também é importante usar uma grande quantidade de dados (eu uso mais de 25 anos para testar sistemas, sempre treinando novamente após cada decisão derivada de aprendizado de máquina) e para realizar testes adequados de avaliação de viés de mineração de dados para determinar a confiança com a qual nós Podemos dizer que os resultados não vêm do acaso. Meu amigo AlgoTraderJo & # 8211; que também passa a ser um membro da minha comunidade de negociação & # 8211; Atualmente, está crescendo um segmento no ForexFactory seguindo este mesmo tipo de filosofia para o desenvolvimento de aprendizado de máquina, enquanto trabalhamos em alguns novos algoritmos de aprendizado de máquina para minha comunidade de negócios. Você pode consultar o tópico dele ou postagens anteriores no meu blog para vários exemplos de algoritmos de aprendizado de máquina desenvolvidos dessa maneira.
Se você gostaria de aprender mais sobre nossos desenvolvimentos em aprendizado de máquina e como você também pode desenvolver suas próprias estratégias de aprendizado de máquina usando a estrutura F4, considere juntar-se à Asirikuy, um site repleto de vídeos educacionais, sistemas de negociação, desenvolvimento e e abordagem transparente para negociação automatizada.
Aprendizado de máquina de negociação de opções
Poderia facilmente ter sido chamado "como eu perdi 500k com aprendizado de máquina". Assim como o jogo, é fácil manipular as estatísticas para mostrar que você se saiu bem em algum período de tempo.
Eu trabalhei para um grande banco de investimento há cerca de 10 anos, escrevendo programas de negociação para investidores quantificados que eram criadores de mercado. Os quants chamavam os caras como ele "varejo" dos investidores e eles alegremente tiravam todos esses negócios. É como eles fizeram todo o seu dinheiro.
Então, todo mundo, cuidado em fazer disso um estudo de caso sobre como ganhar muito dinheiro muito rápido. Você está mais propenso a perder dinheiro.
Eu não posso enfatizar o quão importante é entender que as pessoas que negociam usando ação de preço (en. wikipedia / wiki / Price_action_trading) estão apenas especulando com base em onde eles esperam que o preço se mova. Não é diferente das pessoas que jogam Texas Hold'em online e especulam quais cartas as outras pessoas têm baseado nos padrões de apostas. Se você ficar bom em identificar os padrões (como esse cara fez), você pode ir em uma sequência de vitórias, mas quando o jogo muda (como aconteceu com esse indivíduo depois de 2009), então você vai para casa ou vai à falência.
Esse cara encontrou uma vantagem em 2009. Ele ganhou 500k. Fantástico. Mais do que qualquer vantagem já me conquistou. Mas, o mercado mudou muito desde então, com a HFT se tornando tão predominante (theverge / 2012/8/7/3226187 / trad. De alta frequência) que, por favor, tenha cuidado antes de seguir este curso. É improvável que seu código valha muito hoje sem modificações, e quando você modificá-lo você perceberá, como eu, que quando os outros jogadores têm acesso aos livros de pedidos e podem pular a linha você não tem chance no jogo em 2012 .
Um último comentário: Por favor, poste dados recentes quando você fala sobre projetos como este. 2009-2010 é de 3 anos atrás. Desde então, houve uma agitação significativa nos EUA, na Ásia e na UE. Como esses retornos são relevantes para hoje?
Para começar, há uma probabilidade simples: conhecer as chances de fazer sua mão versus a recompensa no pote, ou a chance de ganhar com várias mãos iniciais. Isso é bem básico, mas muitos jogadores de baixo valor estragam tudo. Se você acertar, os erros deles são o seu ganho.
Em um nível mais avançado, a teoria dos jogos entra em jogo, usando blefes e assim por diante. O jogo é complexo o suficiente para não ser completamente resolvido, e é uma área ativa de pesquisa. A Universidade de Alberta está trabalhando muito no desenvolvimento de bots de pôquer usando a teoria dos jogos. Ao jogar uma boa estratégia, você pode impedir que outros jogadores explorem seus padrões.
Só depois que você tiver uma boa noção de tudo isso, você realmente deve pensar em explorar as fraquezas de um jogador em particular. Os caras de Alberta também estão trabalhando nessa parte. O jogo explorativo pode melhorar seu lucro, mas também torna você mais vulnerável.
Para uma boa visão geral deste material, o livro Mathematics of Poker de Ankenman and Chen é um bom lugar para começar.
Eu concordo que a HFT é extremamente competitiva hoje em dia. Se eu tivesse que escolher entre os dois, jogaria poker.
Tão verdadeiro e frustrante. Mas a legalização do jogo on-line pode trazer de volta outro boom pelo menos por alguns anos.
Poker é "um jogo de habilidade com um elemento de sorte" e não deve ser confundido com, digamos, jogos de roleta ou o resultado de um sorteio.
Mas o jogo HFT muda e você tem que acompanhar. Assim como um jogador de poker de 10 anos atrás, não sobreviveria no jogo hoje sem adaptar seu estilo de jogo.
Desenvolvo estratégias algorítmicas para ganhar a vida, e minha primeira reação à leitura do seu post foi o ceticismo. Eu sou cético por dois motivos. (1) porque seus métodos são tão pouco convencionais em um setor onde regras de convenções e (2) por causa do período de tempo de seu sucesso, que é uma das recuperações de mercado mais impressionantes da história.
Eu não posso te dizer quantas pessoas eu trabalhei com quem não conseguem isolar a fonte do seu pnl (eu incluído, às vezes). Isso é fundamental. É importante comparar sua estratégia com outras estúpidas que você sabe que não têm vantagem. Quando alguém me mostra estratégias que funcionaram em 2009 e 2010, eu imediatamente faço com que elas provem que sua estratégia não equivale a ser ações longas.
Isso ajudará a isolar se a sorte está ou não envolvida. Quando você diz que o número e o tamanho de seus negócios justificam a validade da estratégia, isso é errado. Você poderia fazer 1000 negociações em um dia: comprar 10 RUTs de futuros no início do dia, vender 10 no final e apenas raspar 1 lote para os outros 998 negócios. Em um mercado de touro como o 09-10, isso teria feito 400k e não teria nada a ver com o Machine Learning ou seus aplicativos para o HFT.
Eu faço todos os traders benchmark seu trabalho contra uma série de outras estratégias que eu sei que não têm vantagem, mesmo que, às vezes, pode parecer ter vantagem.
Agora, eu não estou dizendo que você não tem vantagem legítima, mas você faz um desserviço aos seus leitores omitindo estatísticas e discussões relevantes como essa.
Eu também estava nesse negócio, e não há nada não convencional em seus métodos. De fato, descreveria de perto os métodos de mais de uma loja que eu conheço. (Exceto que eles foram capazes de superar os declínios). E a vida útil do indicador de 3 a 6 meses parece estranhamente familiar.
E esses lugares são tudo menos "regras de convenção" - são "regras de criatividade, antes que nossos concorrentes sejam criativos o suficiente".
& # 62; Quando alguém me mostra estratégias que funcionaram em 2009 e 2010, eu imediatamente faço com que elas provem que sua estratégia não equivale a ser ações longas.
Assumindo que o OP está dizendo a verdade, não há estratégia de "equities longos" equivalente que faria 1500% de lucro em 6 meses (% 3000 anualizado), com um rebaixamento máximo de 20% ($ 2000 em $ 10000 - mas seu rebaixamento máximo provavelmente mais perto de 5% do que para 20%). Você é bem-vindo para demonstrar que existe.
Parece-me que você está fazendo estratégias de baixa frequência; é um jogo de bola completamente diferente do que o HFT. Ele fez 400.000 negociações, metade delas longas, metade delas curtas. Pode ter sido sorte, e ele poderia estar montando algo subjacente às ações, mas isso NÃO equivale a ser ações longas. Ele pode ter encontrado uma maneira de obter alavancagem não linear (em vez de previsão). Mas isso também vale muito dinheiro nas mãos certas.
& # 62; comprar 10 RUT futuros no início do dia, vender 10 no final e apenas arrancar 1 lote para os outros 998 negócios. Em um mercado de touro como o 09-10, isso teria feito 400k e não teria nada a ver com o Machine Learning ou seus aplicativos para o HFT.
Isso pode ser (eu não estava negociando em 2009-2010, e não me lembro dos movimentos ou das margens exigidas), mas isso teria uma volatilidade muito maior (e dias com muito mais do que $ 2000 de perda) do que o OP tinha. (Assumindo, claro, ele está dizendo a verdade)
2009-10 foi mais do que apenas um grande rali, foi também um período em que o vol e o skew foram massivamente mal avaliados. Eu sei que isso é de alta frequência, mas como eu aludi, você precisa ter certeza de que o que você está fazendo não está replicando o perfil pnl de estratégias de baixa frequência.
Então, como você se apresentou em relação aos vendedores de vol? Desde o final do mercado até o final de 2010, a perda máxima diária para um vendedor de vol foi de cerca de 3x pnl diário médio, e 80% dos vencedores. Então seus retornos soam melhor, mas não incrivelmente.
Mas, mesmo que você tenha falhado tanto quanto a venda no mesmo período, isso não nega a validade da estratégia. Se os retornos não foram correlacionados, então é seguro dizer que você não estava apenas inadvertidamente encurtar vol.
Então, comece por aí, faça uma regressão comparando seus retornos diários com alguém vendendo vol. Faça o mesmo com estratégias de média móvel. Zombar de um simples teste de retorno do mercado versus um ES beta é difícil, mas isso também seria algo a ser testado. Eu não espero que você faça nada disso, e eu também não vou me incomodar. Só estou dizendo que uma discussão completa sobre esse assunto incluiria essa informação.
Na melhor das hipóteses HFT é um jogo de soma quase zero. Não está criando valor para os clientes. Não está tornando o mundo um lugar melhor.
É uma falha lamentável do nosso sistema econômico que tantas pessoas inteligentes se esforcem tanto para jogar jogos de soma zero uns com os outros.
Eu conheço um engenheiro muito bom, que costumava projetar chips inovadores para telefonia móvel 4G / LTE. Esses chips contribuíram para a posição de mercado de um dos principais fabricantes de telefones celulares de hoje.
Hoje, esse engenheiro está projetando ASICs para negociação de alta frequência (basicamente, um switch Ethernet especializado, com toda a lógica extra removida, para que os pacotes passem alguns nanossegundos mais rápido).
HFT não é um jogo de soma zero. Está sugando recursos de disciplinas produtivas para uma disciplina improdutiva, fazendo assim uma contribuição negativa líquida.
Nota: por spreads, quero dizer a diferença entre os preços de compra e venda. Eu não sei se há uma palavra especial para isso neste contexto.
Cada poço de futuros costumava ter centenas de comerciantes, que necessitavam de vários assistentes / suporte e recebiam um enorme salário. Muitas empresas precisavam de múltiplos operadores em uma cova, apenas para garantir que poderiam fornecer liquidez a todos os possíveis participantes do mercado. Hoje, alguns estrategistas com uma pequena equipe de programadores podem cobrir dezenas de mercados futuros de uma só vez.
O mesmo princípio se aplica aos mercados de bônus, ações, ações e opções. A HFT suplantou um mercado terrivelmente ineficiente com um mercado melhor. É perfeito ou até bom? Provavelmente não, mas é magnitudes melhores do que o método tradicional.
Com uma profunda compreensão dos mercados e da negociação, não vejo por que você vê a "sorte" como uma variável explicativa que é inversamente correlacionada com a frequência de seus negócios (não obstante o efeito das despesas comerciais).
Pelo que eu observei, o seguinte parece ser verdade: 1. Seus algoritmos funcionaram (ganharam dinheiro) 2. Então seus algoritmos não funcionaram, mas você não conseguiu descobrir por quê.
Se você não sabe porque algo parou de funcionar, parece improvável que você tenha uma compreensão completa do motivo pelo qual estava funcionando. Sem entender a natureza do valor preditivo do algoritmo enquanto ele estava funcionando, seu sucesso parece ser uma boa sorte.
Seu algoritmo poderia ter mostrado uma correlação sistemática com qualquer número de fatores que poderiam ter gerado um forte desempenho ao longo de vários meses. O desempenho seria então atribuído ao "timing" acidental de um mercado favorável.
Eu sei que você se sente diferente, o que estou perdendo?
E de qualquer forma - créditos sobre os $ 500k.
Atualmente estou construindo uma solução de negociação de frequência semi-alta e o problema que enfrento é a amplitude de experiência que você precisa para que tudo aconteça. Design moderno de chip, baixa latência, sistema de mensagens simultâneas sem bloqueio, projeto de sistema tolerante a falhas, algoritmos de aprendizado adaptativo, k-means clustering e APIs de broker são apenas um punhado das ideias que estou tentando transmitir para fazer progresso. Para mim, a criação de algoritmos é mais fácil do que ler e implementar uma interface de corretor.
Certamente há exércitos de doutores apoiados por muito dinheiro, mas eles existem atrás de muros de propriedade intelectual fortemente protegidos. Uma plataforma de negociação HFT / Algo / Automatizada de código aberto que traz uma sensibilidade de hacker para esse domínio de problema seria seriamente competitiva.
Talvez postar o código-fonte não seja uma boa ideia, mas postar mais detalhes seria bem-vindo para que as pessoas interessadas pudessem seguir seu próprio caminho para negociações automatizadas.
Você não está errado, mas o que você escreveu aqui é aplicável a qualquer história de sucesso postada no HN.
Leitor de advertência. Sempre.
Quando você pensa no Facebook / Instagram, você pensa "Droga, esses caras tiveram sorte como o inferno". Quando você pensa em negociação automatizada, pensa: "Ei, não pode ser tão difícil", e começa a ativar seu IDE e implantar código para falar com uma API facilmente provisionada.
Claro, pode levar meses para perder sua camisa vendendo um serviço de fotos para o Face / Goog / Apple. Você pode perder tudo durante a noite com negociação automatizada.
Meu pai costumava negociar commodities para viver no pit no CME muitas luas atrás, e quando eu estava crescendo eu seria seu lado técnico quando ele estava negociando para fora da nossa casa suburbana de Chicago (configurando receptor FM / antena parabólica / etc para dados de cotação em tempo real, ficando acordado até tarde da noite com ele passando por cenários de negociação no Tradestation on Win3.1 com dados baixados em massa da Knight Ridder, e assim por diante).
Algo muito importante que aprendi com ele foi: "O mercado pode ficar irracional por mais tempo do que você pode ficar solvente". Com uma inicialização, você pode atingir o fundo. No mercado certo, o fundo está muito abaixo do que você pode ver.
Vou levá-lo ad absurdum: Você pode perder tudo em um segundo, não olhando para a esquerda e direita ao atravessar a estrada. Ou mesmo olhando para a esquerda e para a direita enquanto cruza a estrada, quando outra pessoa está dirigindo de forma imprudente.
É possível tentar HFT com pouco mais risco do que declarar um novo serviço InstaFaceGoogApple. Coloque $ 10.000 na sua conta de margem e use um corretor que pratique a devida verificação de margem. Tada! Você não vai perder mais de US $ 15.000 com isso. (Sim, você pode perder mais do que você coloca na sua conta de margem, mas não muito).
Embora seja mais inicial do que o InstaFaceGoogApple, ele é comparável aos 4 meses de salário que você perderá ao criar o serviço InstaFace. E, ao contrário da maioria dos aplicativos InstaFace, você tem um feedback imediato do mercado, o que só pode ser uma coisa boa.
Nota: O Instagram teve um feedback imediato do público em geral, forçando-os a escalar muito mais cedo do que esperavam - mas eles não tiveram um feedback quanto ao valor financeiro de sua proposta. Na verdade, não demoraria muito para o instagram valer zero. Leia, por ex. jamesaltucher / 2011/02 / meu-nome-é-james-a-e-. - uma aquisição de US $ 100 milhões na época é como uma aquisição de US $ 300 milhões em avaliações de hoje; não Instagram, mas definitivamente nada a ignorar.
& # 62; Com uma inicialização, você pode atingir o fundo. No mercado certo, o fundo está muito abaixo do que você pode ver.
Isso é verdade. Mas você ainda precisa lembrar que 90% das startups falham e, das que têm sucesso, muitas são apenas moderadamente bem-sucedidas. E, no entanto, ninguém continua gritando "mas a maioria das startups perde dinheiro!" em cada história da HN.
& # 62; Quando você pensa em negociação automatizada, pensa: "Ei, não pode ser tão difícil", e começa a ativar seu IDE e implantar código para falar com uma API facilmente provisionada.
Qual é o que devemos abordar, e esse aviso "é uma aposta" não. Quando você vê Suzanne Vega cantando, você pode pensar "Ei, não pode ser tão difícil de cantar". Muitas pessoas fazem. E ainda assim, eles crescem a partir disso, geralmente sem tentar publicar um álbum (e falhando). Isso não deveria ser diferente.
O ponto é que você é atraído para cruzar a estrada, quando você absolutamente não precisa.
Para abrir uma conta com a infra-estrutura necessária para se envolver em HFT, é preciso ser um investidor credenciado (normalmente significa ter um patrimônio líquido de 1 milhão de dólares ou mais) e os corretores mais baratos normalmente exigem um depósito mínimo de US $ 500.000.
Para não mencionar os custos globais, incluindo hardware, co-location, dados de mercado e outros custos de fornecedores são da ordem de 45-50k por mês.
Com $ 10.000, você não pode abrir uma conta de negociação normal, já que a lei exige um depósito mínimo de 25k.
Enquanto estivermos citando Keynes, vamos lembrar também essa preciosidade de uma carta que ele escreveu para os regentes do King's College sobre o desempenho do portfólio de sua dotação (que Keynes administrava).
"A gestão de investimentos em bolsa de qualquer tipo é uma atividade baixa, tendo muito pouco valor social e participando (no seu melhor) da natureza de um jogo de habilidade, do qual é uma coisa boa para a maioria dos membros de nossa Sociedade ser livre e que a justificação da Worlaby e da Elsham reside no facto de ser uma empresa construtiva e socialmente benéfica, onde exercemos uma verdadeira função empresarial, na qual muitos dos nossos órgãos podem estar razoavelmente e utilmente interessados, congratulo-me com o facto de o Comité Estatal. - julgar pelas suas caras de poker e comportamento imperturbável - não levar muito a sério os ganhos ou perdas da Bolsa - eles são muito mais deprimidos ou exultantes (conforme o caso) pelos resultados da agricultura. no entanto, analisar de tempos em tempos o que está sendo feito e os princípios de nossa política ".
Edit: Worlaby e Elsham era uma fazenda que a dotação possuía.
Seu pai não te ensinou sobre "Parar ordens"?
Você não pode ter seu algoritmo disparando sem supervisão. E para ter certeza, muitos testes e LIMITES.
Limite a quantidade e o valor dos pedidos.
Com estoques, o pior caso: você perde o valor de face das ações em seu portfólio.
Derivativos: você pode perder mais, até mesmo 'responsabilidade infinita' (ainda, é restringido pela inércia do mercado de ações)
Então eu acho que eles têm um papel na limitação de perdas (que se não estivessem lá, seria muito maior)
O que me incomoda é este ano que eu ouvi em 3 ocasiões separadas para 3 empresas independentes de startups que as pessoas propõem "Vamos fazer a estratégia do Instagram". Pode ser óbvio para você e para mim como isso soa absurdo, mas há um número não trivial de pessoas que seguem cegamente as manchetes.
Edit: Concordo com @toomuchtodo. É muito fácil arriscar com o HFT que o aviso é necessário aqui mais do que em outros lugares.
O único argumento em seu comentário que não é sua opinião infundada é que os criadores de mercado ganham dinheiro com as pessoas que executam negociações. Mas isso é verdade por definição.
Os comerciantes que "pegaram alegremente todos esses negócios" não estavam enganando ninguém, estavam simplesmente lucrando com a diferença no preço de oferta e oferta no mercado. Esse é o papel de um criador de mercado e, na verdade, torna mais barato para pessoas como OP executar um grande número de negociações. Portanto, mesmo que esse comentário soe como uma refutação sensata do artigo vinculado, ele realmente não diz absolutamente nada.
Novamente, desculpe por criar uma resposta negativa e contribuir para um tom ruim, mas eu realmente o correto é chamar esses tipos de respostas. Eles desencorajam o compartilhamento e a discussão honestos.
O comentário de yajoe é um exemplo de como criticar um post como esse de uma maneira útil. news. ycombinator / item? id = 4748989.
Dado que ele poderia convencer outras pessoas a se engajarem em jogos de alta tecnologia em um mercado menos favorável do que aquele em que ele atuava, palavras fortes são exigidas neste caso.
(E, de fato, viver é apostar. Tudo é apenas uma questão de portfolie de risco / recompensa).
Mas jspauld aparentemente fez $ 2 / trade depois de taxas sobre 250.000 negociações, com um desvio padrão muito pequeno (eu acho que menos de $ 2 / trade) - o que o torna um dos melhores negócios que alguém poderia ter.
Você não pode viver sem jogar - por exemplo, vai ser um funcionário assalariado do Yahoo, em vez de o Google ou aquele estranho "TheFacebook" novinho em folha em 2004, era uma aposta.
jspauld, estatisticamente falando, fez menos de um jogo lá do que quase qualquer outro postando em HN.
& # 62; Então, todo mundo, cuidado em fazer disso um estudo de caso sobre como ganhar muito dinheiro muito rápido. Você está mais propenso a perder dinheiro.
Verdade. Mas isso é verdade para todas as histórias de sucesso postadas no HN, reddit ou USAToday.
Como há uma comissão sobre negociações, e porque você paga impostos sobre ganhos líquidos, mas seu imposto mínimo é zero, a negociação de alta frequência, por sua própria natureza, deve ser uma perda para a maioria dos jogadores.
Eu não sabia que isso é o que define o jogo. E "nenhum serviço produzido" é certamente errado pela teoria econômica aceita - os arbitradores fornecem um serviço de descoberta de preços para todos; eles são recompensados por expor os preços ineficientes, mesmo que isso seja feito através de mecanismos de mercado, e não de um cliente específico.
OP parece ser um arbitrador estatístico - que é o mesmo conceito, exceto que inclui uma mudança no tempo ou espaço (e incorre em risco). Talvez você não esteja interessado nesse serviço de descoberta de preços, mas outras pessoas estão pagando com sua carteira. (E são principalmente os criadores de mercado que pagam por isso com lucros reduzidos)
& # 62; o ganho de um comerciante é a perda de outro operador (em relação aos retornos do mercado).
Isso não é verdade em investir em geral - quando as ações têm tempo para apreciar ou depreciar, definitivamente não é um jogo de soma zero. Todos podem ganhar, ou todos podem perder, ou qualquer coisa no meio (tudo depende do seu intervalo de tempo e da sua medida de perda ou lucro. O elemento "soma não-zero" chega parcialmente das empresas usando o lucro operacional para comprar de volta ações próprias).
& # 62; Como há uma comissão sobre negociações, e porque você paga impostos sobre ganhos líquidos, mas seu imposto mínimo é zero, a negociação de alta frequência, por sua própria natureza, deve ser uma perda para a maioria dos jogadores.
Isso só é verdade se todos os jogadores forem jogadores de hf. Se houver atividade não HF suficiente, o argumento de soma zero não será válido.
(Eu não estou dizendo que não é uma boa aproximação - na maioria das escalas de tempo, na maioria dos cenários, é - mas não é a verdade matemática que você sugere que é)
Novamente, é uma ótima aproximação na maior parte do tempo e na maioria dos períodos de tempo e classes de ativos, mas NÃO é axiomática da maneira que a maioria das pessoas acredita que seja.
Lembre-se: desde que haja uma maneira de injetar ou retirar mais capital do sistema (por meio de qualquer classe de ativos, como todos eles estão interconectados), a soma não é identicamente igual a zero.
Basta supor que uma das ações é uma empresa de mineração de ouro que funciona de forma eficiente. O valor da ação sobe, e as ações são resgatáveis pelo ouro, sem que ninguém tenha que perder nada (exceto a mãe terra)
Parece que você está argumentando que este é um jogo de soma zero, mas se algo é soma zero depende da sua função de utilidade. Se os jogadores são avessos ao risco, então uma transação como a compra de seguro pode resultar em utilidade positiva para ambos os participantes.
Muitas estratégias de negociação estão executando um serviço de maneiras semelhantes (mas mais complicadas).
A maioria das pessoas não entende que, quando você é capaz de reconhecer padrões, jogar milhões de mãos sem nunca expor mais de 1% do seu saldo em qualquer acordo não é "jogo", mas "imprimir dinheiro" (uma pequena quantia de dinheiro). no meu caso, em comparação com a consultoria, mas esse não é o ponto).
Ao mesmo tempo, o fato de que a maioria das pessoas não entende o gerenciamento básico de bankroll, gerenciamento de risco, desvio padrão, valor esperado, variância, etc. significa que provavelmente existem algumas oportunidades ganhar dinheiro para aqueles que entendem isso; )
Se eu tentasse reunir uma definição, poderia aparecer algo como:
Arriscar a perda de algo de valor em troca da possibilidade de ganhar algo de maior valor em uma situação em que o fator determinante de perder valor ou ganhar valor é a chance aleatória.
O problema com uma definição como essa é que, como outros apontaram, ela se aplica a vastos domínios do esforço humano, desde fundar uma empresa até jogar na loteria. Também não inclui distinção entre riscos com um valor esperado positivo e riscos com um valor esperado negativo.
Se uma loteria tem dez ingressos de $ 1 para venda e cada ingresso tem chances iguais de ganhar, há uma diferença óbvia entre o prêmio de $ 11 e $ 9, mas comprar um ingresso em qualquer preço é tanto "jogo" na linguagem comum .
O que realmente precisamos é de uma palavra que se refira apenas ao jogo em situações com um valor esperado menor ou igual a zero.
"Se uma loteria tiver um total de dez tíquetes de US $ 1 para venda e cada tenda tiver chances iguais de ganhar, há uma diferença óbvia entre o prêmio de US $ 11 e US $ 9, mas comprar um tíquete a qualquer preço é o mesmo "jogo" na linguagem comum.
Eu acredito que chamamos isso de jogo.
Um economista da UChicago e um estudante de graduação estão atravessando o campus. O estudante diz. Ei . há uma nota de cem dólares no chão! O economista zomba e diz que não há. se houvesse um, alguém já deveria ter pegado.
Às vezes eu me pego pensando desse jeito. Eu tenho que me lembrar que (a) os mercados não são perfeitos, e (b) o mundo real tem grandes assimetrias em informação, idéias e talvez força de vontade (com isso, quero dizer, enquanto 100 pessoas pensam em uma grande idéia, não todos tentarão implementá-lo, mesmo assim, as pessoas serão diferentes na execução).
Dito isso, você provavelmente está certo. Esta estratégia comercial provavelmente perderá dinheiro hoje :-p.
No início dos anos 2000 eu escrevi um algoritmo de aprendizado de máquina que bateu o S & P 100 com mais de 1 trilhão a 1 de chance de ser sorte. Previa um dia de negociação cheio com antecedência. Mas isso estava todo no papel dos custos insignificantes das empresas de trading; Diferentemente de você, eu não poderia superar os custos de varejo. É incrível que você possa fazer isso. Só por essa razão, acho muito provável que você fosse um macaco habilidoso.
Também como você, ninguém na indústria estava interessado em meu código, mesmo depois de uma revista do setor ter assistido por 3 meses e descoberto que ele deu um desempenho "estelar". As poucas pessoas com quem eu pude discuti-lo me disseram que era impossível fazê-lo habilmente (teoria do mercado eficiente), então eles assumiram que era uma farsa ou o algoritmo tinha sorte.
US $ 0,005 / share, mas isso não diz nada sobre a superação do bid / ask. Parece que o OP fez isso jogando um pouco de mercado na mistura.
Se a sua exposição líquida é pequena, mas isso é apenas porque você está compensando várias posições, então você provavelmente está pegando níqueis na frente do steamroller de volatilidade & # 38; se você ficar no mercado por tempo suficiente, você será esmagado em algum momento.
Dito isto, posso concordar que o meu caso é bastante incomum e que todos devem ter cuidado ao tentar fazer algo assim. Mesmo para mim eu não poderia fazer isso agora. (Há uma razão pela qual eu desliguei meu programa.)
Quanto você gastou antes de "afinar" isso? Quanto você gastou depois? Quais foram as consequências fiscais de seus negócios? Você fez exatamente 500k? Você já trocou tudo desde então?
Você mencionou que ocasionalmente "sentou-se" e tomou algumas grandes posições perdedoras. Foram estes de propósito? Insetos? Sua exposição foi realmente muito maior do que você pensou? Was limiting contract size enough risk management?
With regard to tuning I may have lost $1000 or so but as I wrote in the article I was able to build a backtesting model that accurately simulated live trading. So once I had that I could basically use it to verify I had sufficient edge to make a profit after covering my commissions.
My risk exposure was very low. When I said large losing positions this meant like $600. But the bottom line is I had a daily stop loss of $3000 enforced at my broker. The most I ever lost was around $2000.
Anyway, there is not really some hidden thing that I am not telling people. It does bug me a bit that your comment is at the top given that it says I'm manipulating statistics and was actually one of the guys that the quants gleefully picked off. I think it's unlikely I traded much with other HFT systems but if I did they certainly lost money.
With a bit of luck and a good partner, this guy could have built a sustainable business.
I think that if someone is a good programmer and has some mathematical chops and has that kind of experience daytrading, taking a shot at automated trading is probably a reasonable thing for them to do. Without all of that background, you're right, they're almost certain to lose money.
Except two things:
1) He didn't lose money, he made 500k.
2) If this worked reliably, you would be out of a job.
Would you dare to "predict" the direction of this FX rate movement in the next month? Then it's a matter of calculating potential profit/loss factor and adjusting your trade value. And yes, as with any high risk investment, putting all your eggs in one bucket is not a brilliant idea. Just like taking all your savings to Vegas.
If you've really worked in that field than it's very surprising you've never heard about what professional poker players call bankroll management (and they "stole" the concept from professional traders).
The whole point is that you can --either if you gain an edge or get lucky-- win big. Very big. But you're never exposing a large part of your funds in the process.
Maybe OP had an overall "stop loss" at, say, $10K. Had he had five minus $2K days in a row at the start, he'd be out. He wouldn't be broke. He wouldn't be without a car and without a bank account. He just would have lost $10K.
But there's no upper limit as to how much you can win.
All you need is discipline and sound bankroll management.
And, yes, I've won a five-digits figure (hence not anywhere near what OP did) real $$$ at online poker. Starting from $0.01/$0.02 small blind/big blind tables and then working my way up using bankroll management.
It's assymetric. You're foolish if you think that succesful traders who won $x were as likely to lose $x. This is simply not how it works and it's very well explained in OP's article. He's detailing what his maximal daily exposure was and it was tiny compared to what he made.
Risk management is probably the single most important thing to understand in trading. Unfortunately, it's something that lots of people learn late, if ever.
Folks get caught up in the romantic notion of betting it all and winning big, but end up losers. Meanwhile, the consistent winners they aspire to be are exposing perhaps 0.2% of their roll at a time.
Though, one thing I think is a bit unique to trading is prevalence of folks who preach without practicing. Just about anyone with a brokerage account can rattle off the same short list of critical do's and don'ts, but very few actually follow them.
With my program I didn't really have bad streaks because my P&L was averaged out over thousands of trades per day.
I played HUSNGs for a living for several years, and I could play three tables at a time (about 9 games per hour) with a 60% winrate. That's incredibly low variance--my graph over the long-term was better than a 45 degree incline.
This is really cool, any way you cut it.
With a quick bit of R code, we can simulate his PnL over 120 days multiple times, assuming he has no skill, and see what the probability of him being up 4k/day is. I'll use a t-distribution with 3 degrees of freedom, which allows big up and down swings (again, accentuating the effect of luck).
That is, there's a zero percent chance that he would have made those returns if he had no skill. And remember that this simulation is overestimating the effect of luck.
I'm thinking back to Garry Kasparov's piece in the NY Book Review a couple years back: nybooks/articles/archives/2010/feb/11/the-che.
He talks about a chess tournament in which it was "anything goes". competitors could be human, computers, or humans with computers. The expected outcome was that a grandmaster using a Deep Blue-like computer would win, but the winners ended up being a couple of amateurs with three computers:
& # 62; The surprise came at the conclusion of the event. The winner was revealed to be not a grandmaster with a state-of-the-art PC but a pair of amateur American chess players using three computers at the same time. Their skill at manipulating and “coaching” their computers to look very deeply into positions effectively counteracted the superior chess understanding of their grandmaster opponents and the greater computational power of other participants. Weak human + machine + better process was superior to a strong computer alone and, more remarkably, superior to a strong human + machine + inferior process.
So in HFT, how much room is there for an amateur to profit over professionals by having a sophisticated process?
HF traders are just as much hackers as anyone on HN (and there are plenty of HF traders on HN). So 'theoretically', they've already done what is being suggested here. If someone comes along and develops a winning strategy, it really shouldn't be considered as having anything to do with 'professional strategy vs novice strategies'. It would just be about one person either getting really lucky or coming up with something that is genius in its own right.
If there are 'professionals' and then other 'professionals' whose strategy depends on information about how other 'professionals' trade (and there is), you end up with strategies at all valid points in the sample space of possible strategies and counter strategies. Theoretically, there should be no other possible strategies. Inevitably someone will come up with one though, and the 'sample space' will grow. But its extremely unlikely that additional unique strategies are successful just because they 'counter' the strategies in the sample space. But then again, this is real life and these things aren't impossible.
I developed a fully-automated low-frequency stat arb system that I ran in 2007 based on a perhaps even simpler algorithm. It traded various equities equally to the long and short side regardless of market conditions so widespread rally or collapse was irrelevant. I logged about 20-30 trades/day - much slower.
The results, using no leverage, were +90% in a year with a worst drawdown of 2% and a Sharpe ratio of 2. Total trades were 5000+. Month-to-month the results were very consistent until the uptick rule was nixed in July 2007. August 2007 was a record winner for me, but Sept-Dec 2007 fell flat, not losing, but with greatly diminished profits and the same variation and more frequently getting slammed all-long or all-short instead of a mix that was often near-neutral. Also getting fills better than my orders then completely disappeared, as this was the beginning of the HFT middlemen - including your own brokerage. I shut it down at the start of 2008, keeping the profits intact and moving on to other priorities.
I continued to monitor the theoretical results for a couple of years but the conditions didn't return so I eventually cancelled my data feed.
I consider HFT to be any strategy where speed itself is the what gives the edge. Colocation is usually a prerequisite, though not sufficient. It's a shame HFT gets all the attention, when it's really a tiny portion of trading activity. Algo-trading in general is 70%+ of market activity in the US.
Also limiting trades isn't really adequate risk management. The tech exists to very accurately model your exposures. This is something I see underdeveloped a lot, and what separates the top trading firms from the rest.
Still I commend you creating a model, working out how to test and execute it automatically and actually trading your own money.
I really think more hackers should be actively managing their money, (in general, not like in the article). We have these amazing liquid markets, all time low spreads/commissions, products like ETFs/derivatives to accurately and cheaply execute a given strategy, and a huge increase in tech to model risk, but personal personal investing is the same as the 60s.
In Europe, HFT is mostly what OP describes, because they have reasonable control (e. g., you have to have one execution per 10 orders or pay a fine; in US exchanges, you can sometime finds 10,000 orders submitted in 3 seconds, hundreds of thousands per hour, with 10-20 executions).
& # 62; Also limiting trades isn't really adequate risk management. The tech exists to very accurately model your exposures.
That's basically what AIG did with copulas. Unfortunately, the assumptions in these models tend to break during crisis, when correlations go to one. And AIG went bankrupt.
Limiting trades, done correctly (mathematically AND legally) is the ONLY way to do risk management properly. With more assumptions, you can have "more efficient" risk management in terms of leverage (e. g., you can net S&P and RUSSELL exposure by assuming their correlation structure) - but as AIG has shown, that does not mean you are doing a better job of managing your risk.
silly example, 100 small positions could be less risky than 1 large position or, 1 long, and 1 short trade will cancel each other out and create a riskless portfolio (with 0 return).
You need to have a risk budget, account for each trade, and work out the risk for the composite portfolio. Obviously this is not fool proof, but it's a way better approximation of the real world.
Sim. And assumptions about this are bound to break at the most inopportune moment, see e. g. AIG, which I already referred to. Read about the "copula model" disaster, as your statement indicates you are unaware of its details. en. wikipedia/wiki/David_X._Li#CDOs_and_Gaussian_.
& # 62; 1 long, and 1 short trade will cancel each other out and create a riskless portfolio (with 0 return)
This is true if and only if the long and short are in the same exchange, AND exchange rules allow netting long vs. short deterministically. Otherwise, you have counterparty risk. E. g., you can be long SPY and short SP contract (in equal underlying), which would theoretically mean your only exposure is interest rate changes (and sometimes not even that!)
However, since this is in different exchanges, it might happen that during a flash crash, your SPY position will be liquidated for insufficient margin at a low price, but then the price bounces back, and you've lost money on a perfectly hedged position.
OP's model (limiting exposure and assuming the worst, if I understand correctly) is not statistically efficient use of margin, but it's way better at actually managing risk than any statistical model.
very interesting, a spike in sept-dec 2009 that roughly follows his PNL.
But, every time I've tried to actually get started, I've always found the amount of research required before being able to begin is just staggering.
It seems like the logical course of single-programmer HFT trading being:
- Find sample data.
- Build your trading program using sample data.
- When you're happy: connect to live API and set your trading program loose.
However, the first step and the third step seem like the ones which require the most research.
Is there somewhere which has a straightforward dump of timestamped market data available to download (free or not), in order to actually develop a working program?
Likewise, figuring out what to actually trade with, and which service to use is also pretty taxing.
If the easy part was building a working model either you got incredibly lucky or the model is wrong.
Symbols change, stocks split, dividends are announced etc.
The one interesting point that he glossed over is what his indicators were. He wrote, "The indicators that were most useful were all relatively simple and were based on recent events in the market I was trading as well as the markets of correlated securities."
Which doesn't really tell you much.
But for anyone coming to HFT from a coding background instead of a trading background, an explanation of one of your indicators would have been fascinating.
Worst case he runs out of capital over a period of weeks.
He can't blow up in the way that you think - but he can have large drawdowns over a period of weeks.
Markets are eventually consistent scalable systems - and that is why we prefer them over central planning. In the medium term they prices things correctly, cheaply and efficiently (decade+).
In the short term however (sub-decade) - they can't price jack.
Markets are inefficient period - if they weren't, well then P=NP and you could just put your NP-hard problems into a market and get back cheap, quick, accurate results. Oh - wait - protein folding is actually harder than that.
There are 2 major ways to make money in the markets. Value-Growth and statistical arb (often high frequency). The former (Buffett) is highly concentrated bets on the future of business (I'm value - long TSLA/GOOG/Samsung). The latter is looking for thousands of small diversified statistically significant correlations above 50% (random guesses) and trading costs between securities/price movements over short time intervals (aka statistical ghosts in the data - RenTech/Shaw).
Both work. Both work well. And will continue to do so as long as markets exist.
Making $500K on $100K over 6 months is good business.
Por exemplo. if you made 10% when overall market was up 15% for the year, you have negative alpha. [As someone could have bought index and held it through year to generate better return]
If you made 20% when market was up 10%, you have positive alpha.
That is why everyone in the investment community is 'seeking alpha'.
So the fees will be $3950 - $15,800 per day.
$15,800 - $79,000 per week.
And he surely wasn't paying retail prices - you can go down to around $0.50/future if you know what you are doing.
(In general, futures have 1:5 to 1:20 leverage)
$500 - 2,000 per day.
$2,500 - 10,000 per week.
$130,000 - $520,000 per year.
That's just the fees. He must make that much just to break even. If you can make that much starting with $30K, you're a supermotherfucking genius.
One "tick" (minimal movement) is worth 12.5 EUR. At volume you pay 0.5 EUR, IIRC, but let's assume you pay 1 EUR in fees, everything included.
If you bought and sold at the same price, you lost 1 EUR/trade. This is the cost of business.
If you bought, and sold after a favorable 1 tick movement, (e. g. bought at 4013.0 and sold at 4013.5), you're 10.5 EUR richer - 12.5 on the difference, minus 1 for each trade (one buy, one sell).
If you bought and sold after an unfavorable one tick movement (e. g. bought at 4013.5 and sold at 4013.0), you're 14.5 EUR poorer - 12.5 on the difference, and 1 for each trade (one buy one sell).
OP averaged $2/trade over 200,000 trades; that means he had 2/3 right calls, and 1/3 wrong calls or so if he only traded dax and only had 1 tick moves.
He was very smart, but you're looking at it wrong - the fees are the cost of doing business, much like salaries are the cost of producing software. In finance, you rarely care about revenue or "notional" (which can easily run into the trillions per year for a small trader - for.
1 eur, you get 75,000 eur in notional value on the dax).
You just roll the fees up-front into your choices when thinking about it, and it all makes much more sense.
(Not trying to take away from OPs very commendable achievement - just trying to give the common perspective on how to view this)
The biggest issue is the confusion that you can apply machine learning to HF trading. HF trading sub 15min mark is more about playing the deal flow, and only the institutions have an edge on this. This is why goldman had to separate the buy and sell sides in the early 2000's. Above 15mins you are able to find an edge using time series analyses since the market is scaling invariant according to Benoit Mandelbrot and this does not apply to dealflow. Also having access to dealflow allows you to predict volatilty seconds ahead which allows you decrease your risk and increase you reward as well as handle your costs since the volatility will impact your transaction costs even if transaction costs themselves stay the same. There is just so much stuff to cover that a comment will not do justice in explaining what is wrong with this guys logic.
Survivorship bias would mean I simply got lucky. If you're going to say that you're at least going to need to look at my P&L charts and say how I could possibly achieve that much success with luck alone.
Finally, machine learning has everything to do with my success. There were hundreds of variables in my algorithm that were ALL optimized using ML. If you read the article you would know that I built an accurate model for backtesting that I used to optimize variables as well as confirm that I was going to make money before I even started live trading.
I'm pretty confident that whatever you were doing in 2004 has nothing to do with what I was doing.
Why doesn't every hacker do this to make extra money? Is it within the grasp of anybody who can program to automate trading like this?
EDIT: Sounds like it's not really for everybody. You have to own or rent a server with access to direct lines to the exchanges, or else your lag will be such that profiting from HFT is impossible. How much do these cost?
A profitable predictor is a much, much harder problem.
At a place like Goldman Sachs, a quant with a working predictor gets paid 5 times as much as the IT guy who makes that predictor talk to the market quickly enough.
Because, as your question implies, it is (relatively) easy to do the IT work or hire someone to do it. Not so for the predictors.
Once you have the assets and capacity to actively manipulate the price of any stock at will, the market is a VERY different animal and no longer need to be understood at all. You simply force its hand.
I wondered the same thing and tried to answer it for myself not that long ago.
In short, it's hard, time-consuming, stressful and costly.
1) Your code has to work going forward. Coming up with something that works in backtesting is easy, doing it moving forward while staying within your risk envelope and considering all the associated costs is hard.
2) Closely related to #1. Whatever you put together is surely going to need plenty adaptation and oversight. It's a very fluid problem, you're just one player among countless others. How much time do you have in the day? Where is your capital coming from? For most people, the source of capital is a job that they probably can't ignore while fiddling with a trading program that would have to be remarkably successful to replace that income.
3) Everything costs money. You need a certain amount of capital to start with and there are all sorts of running costs. From the basic costs of execution, to market data and eventually co-location if you get that far. The fact that the OP kicked off with an amount that's essentially the barest minimum for any kind active trading is exceptional.
4) Can you maintain discipline and continue executing on all of the above while losing money? How many people struggle to simply get up on time, control their desire to check a particular website or to get over and move on from some frustration? Even if there's automation involved, trading will test your mental fortitude.
I have flirted with HFT in a hobby-like manner and it isn't the programming that will get you the money, it is the domain specific knowledge coupled with the programming. On top of that, there are quite a few risks and potential to lose a lot of money.
2.)Finding a good predictor. Predicting up or down is easy on paper. Finding a predictor that a.)beats the spread, b.)factors in lag time to execution, and c.)factors in commission, is hard.
3.)Market regime changes. What works a few months ago isn't guaranteed to work now.
"I was making a lot of money but now I've stopped" is the same thing as "I was lucky until I wasn't". Making a living by gambling pretty much sucks, which is why most hackers don't do it.
(You'd think that something as complex as markets would attract hackers trying to "figure it out". The problem is that due to the changing nature of the other participants, all hacks are temporary. Makes for great blog posts, but not a long term strategy.)
If you are relying on a broker-supplied pricefeed over the internet you are far outside the real of what is traditionally understood as "High Frequency Trading".
You talked about programming hotkeys (and then automating the hotkeys) so I assumed this was running on your desktop.
Would be even more awesome if you could share some code on github.
(former TT employee)
Do que isso depende?
If he posts the code, you're a long way from running it.
If the tools work, sell them. If they don't, tweak them, try it again, and sell them until they do.
This is risk management.
It is a software implementation of the Viable System Model (VSM), a model for autonomous systems developed by Stafford Beer. It provides structure, communications, auditing and alerting for autonomous systems.
Part of it is base code for dealing with stocks and options, treating securities positions as autonomous systems that have the scaffolding for running simulations on themselves. It's in Smalltalk and runs under Squeak and Pharo. It can be found at:
I won't try to advertise it as a complete solution, but it might be the start of one.
Automated trading is more on strategy, while HFT has more to do with volume and speed. With automated trading, you predict price movements. HFT involves being a liquidity provider. You don't use market technical indicators in HFT, you wait for some really huge orders.
HFT firms won't bother him. Those are dealing with an entirely different set of algorithms. He should have contacted brokers instead.
even though its over 10 years old, is real HFT. moving correlations, windowed FFT (of bid and transaction events), microscopic operators, negative first-order autocorrelation of returns.
it is NOT about supplying liquidity or being a market maker. that's just market makers trying to say they are in on the latest trend.
Seriously though, there are some existing frameworks and products that you could check out. I haven't used this myself, it's just in my bookmarks:
And a low level library for data analysis: pandas. pydata.
Oh, I forgot about another backtesting framework for python. It has a built in IDE as well.
Zipline was unveiled at PyData NYC, and the presentation materials are here: app. quantopian/posts/hello-from-pydata.
Were you compounding the data always, or telling it to forget what was going on several months ago? Or somewhere in between?
(I'm pretty unfamiliar with machine learning, apologies if this is obvious or something)
zero. The article doesn't seem to expound on that unless I missed something.
Is this a result of bots on the other side adapting in some way to what you were doing? I would have thought you would be too small a player for them to notice.
We cannot even tell if $500k is a good risk adjusted return - we have no information on volatility, nature of the exposure or most importantly how much money he started with?
Not exactly shocked Jim Simons didn't return his email. But completely shocking that he walked away from a successful automated trading strategy. the only thing rarer than a free lunch is a man willing to walk away from one. suspect.
2. Author has stated elsewhere than he began with $10k in seed capital.
3. The "bullish" market you cite increased only about %70 in that timeframe while the author's returns were multiples of that number.
4. Author walked away from a _previously successful_ strategy that no longer produced profits. His montlhy returns went to nearly zero so he stopped.
Edited to fix numbers.
It is of course possible that once you made "real" money with your algorithm it was spotted by the other algorithms which then started working against it. (Aka exploiting it) Having talked with people in that space (hft) I was left with the impression that an insane amount of analysis was done on those trades.
Other than sheer luck, the most plausible explanation for your diminishing returns is that you found a strategy that worked _at that point in time_, other people copied it (starting with your broking firm), and as that strategy became more common your ability to make money disappeared.
I work in the industry, this happens all the time. Trading strategies have a shorter half life than you may think.
A lot of people in the business would pay e. g. $5,000 for exclusive rights for something that worked this well in 2009 (with proof that it worked in 2009, e. g. verifiable broker statements), and a smaller amount (say, $5,00) for non exclusive rights.
If he claimed it still works but he wants to sell it, it is a completely different game -- because when these things work, they are cash cows.
If you want to go back to trading, you'll probably have to actively try to get a job -- at the very least, let someone who's still in the business know that you are looking. In my experience in this field, word of mouth and friends-of-friends are infinitely more successful hiring strategies, for both sides.
(Re:releasing the source - I would like to have a look at the strategy, but I would recommend against releasing anything that is even close to being useful, unless you want to spend the next year screening "where can I get a good XTAPI broker" and "I've got XTrader_PRO set up, but I'm getting error 10013, what gives?" emails).
the Nuclear Phynance message board is probably a better place to look for business offers.
I traded stocks and Forex for years and my experience says, it is not for everyone. What ever indicators, discipline or model you follow it is going to work only if you have the right intuition or luck!
Could you explain this part, specifically what do you mean by "bucket"?
"To accomplish this I tracked predicted price moves in 50 buckets that depended on the range that the indicator value fell in. This produced unique predictions for each bucket that I was then able to graph in Excel. As you can see the expected price change increases as the indicator value increases."
Could you explain this part, specifically what do you mean by "bucket".
"To accomplish this I tracked predicted price moves in 50 buckets that depended on the range that the indicator value fell in. This produced unique predictions for each bucket that I was then able to graph in Excel. As you can see the expected price change increases as the indicator value increases."
If the market dives and you quickly get into a big long position, and then it dives some more - what do you do? You can either close out your losing trade and take the loss, or hope that the market comes back up, all the while holding on to the risk of further losses.
Also, there's no guarantee that trades in the middle of a flash crash will remain valid after the crash. The exchange could nullify all trades in a certain period of time, which would completely wipe out your upside potential.
This is the most important thing: In every single "flash crash", the exchanges have retroactively canceled trades, in a rather arbitrary manner (e. g., "every trade between 16:30 and 16:38 is null and void"). There is some underlying justification, but it is also arbitrary (e. g., "anything below 3% of the price when the flash crash started", with no specific justification for the 3% number, or a well defined methodology for the time of the crash).
That could easily turn a +$100K profit into a -$500K profit, depending on circumstance.
In the Flash Crash as well as the Knight Capital incident "up/down 30% from the Previous Close" was the price collar (anything outside that was busted and anything inside stood).
Of course there is no guarantee that the same criteria will be used the next time around so caveat emptor.
edit: I found what I was looking for in the comments.
PS: no sarcasm intended, it truly is an excellent advert.
1. when you have a good system (even one you cannot "improve" further), you don't talk about it. 2. You don't just stop using it.
There should be more to this story.
Last time I checked, NASDAQ and NYSE don't exactly publish API's.
"In 2008 I was “manually” day trading futures using software called T4. I’d been wanting some customized order entry hotkeys, so after discovering T4 had an API, I took on the challenge of learning C# (the programming language required to use the API) and went ahead and built myself some hotkeys."
If you want to make money from investing, why not do so in a socially responsible way? Invest in companies that are changing the world for the better. You might not bring home as much money, but at least you'll be able to sleep well at night.
This does not ring true.
And HFT or day-trading does bring some value to the world. It enables companies to go to the public markets and raise capital. And investors to sell their shares without having to wait too long for a buyer. But those positives come along with negatives as well.
I am not saying that this guy's trading did contribute to flash crashes! He may have successfully implemented systems to prevent that. I hope he did, and if so I'm interested to hear how.
Só brincando. It was a fascinating article. Obrigado por compartilhar.
The level of the coders doing HFT is beyond the comprehension of this guy, added to the team of Mathematicians, Physicists and computer scientists at your average HFT firm, they probably laugh when they read this.
Good try though, it was awesome that eventually he tuned it to profitability, but there's no way in hell they'd buy that amateur software/algorithm.
Kudos though for taking on the task of learning how to code and making money with ML.
He trade other people's money, using other people's (probably employer's) account and resources, I suppose.
His employer have paid all the fees, and, took all the risks - if there is profit - it is mine, if there is a lose - it is theirs.)
The essence of trading is about having a special (insider) position of even being a market maker, who just collecting fees from every trade other people do.)
But this is just my guess.
Taking a Machine Learning and Statistics course does not make you a trader. You need something else - access to the system.
This is why my guess is that he was an employee.
Except finance is supposed to be "serious". In most serious, legitimate activities, extracting money means you provided value somehow. So, what value high frequency trading could possibly provide?
Now I do have an idea where trading could be useful. For instance, a good old merchant doing arbitrage and making a profit is pretty useful: that's how different regions can specialize, do better than they otherwise would, and ultimately lift us from hunter-gatherer tribes where 60% males die a violent death, to our civilization now. And money, as evil as it may be perceived, is to date the best organizing medium humanity ever had.
Investors also have their use: by better allocating money among companies, we could hope to give more money to those who are better at converting it to actual wealth.
The OP didn't make a ton of money because his model of the the companies had an edge, but because his model of the behaviour of other traders had an edge. So I fail to see what useful information his trading put into the system. How his actions resulted in better (or worse) allocation of money between companies. How the (very serious) game he was playing was anything but zero sum.
Maybe there's an error in my reasoning. In this case, I'd happily accept downvotes, but please tell me where I have gone wrong. Not understanding why one's post is being scolded is just frustrating. Like failing an exam and being told to have a hard look at oneself. "Yeah, I get that, but what should I look for ?"
I do get the value of trading, investing, and some form of arbitrage. Heck, I don't have to search for the farm to get my milk. That's a service, and it does deserve a reward. What the author did is a bit different:
& # 62; 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.
I understood it meant "they would trade with me only if they think I was the sucker". And of course, he would trade with them only if he thinks they were the suckers. It's not providing a service. It's fighting in a zero-sum economy.
Now he did say " most of the market volume". So there's a fraction that's not bots, and probably also a smaller fraction that does not even play the zero sum game, but instead does some positive-sum trading with the mostly-zero-sum players. But this interface boundary seems incredibly thin , compared to the internal zero-sum behemoth. That looks like a highly inefficient use of time, energy, and brains.
And even then, I'm not sure the zero-sum game provides any service to the rest of the world: zero-sum players base their models on the behaviour of each other, not on the actual performance of companies. That would add no new information to the system. At best, that only amplifies the effect of the few that actually predict company performance. And I doubt it does it well.
There are really only two actions in a market, providing liquidity (i. e. market-making) or taking liquidity (including arbitrageurs). Stretching the shopkeeper analogy, any time you put a price tag on an item you are taking a risk and exposing yourself. You slap a price on some bananas and then there is a tropical cyclone (it happened in Australia) and the price of bananas doubles. Someone smart swoops in (call them an arbitrageur), grabs your bananas and goes to the till and you legally have to sell them to him even though they're worth double now. You also have inventory risk, if you're holding a lot of bananas out back then there is the chance that they go rotten.
Every limit order (an offer to sell, or bid to buy) has an inherent risk that you should expect to be compensated for (or you wouldn't do it), and enhances the market. The more competition amongst people posting prices the better, it just means more liquidity (you can buy or sell as many bananas as you want) and tighter prices.
The liquidity taker on the other hand is all about exploiting a misprice. Say, Intel release earnings and are down 10%, but the price of the highly correlated ARM hasn't moved yet, if you are the fastest you can take advantage of some poor person who still wants to buy ARM at the same price as before this information was known. Keep in mind here, a price can move without any trades happening (or goods changing hands). The shopkeepers can whip around and change the price tag on their bananas if they are fast enough before anyone buys them.
It is harder to justify the liquidity taker - what marginal advantage is there to having the price of ARM react to that news in 2 milliseconds rather than 20? They force the transmission of information yes, but why is it better to have it happen a bit marginally quicker? On the other hand, how can you have a realtime market without them? It keeps the providers on their toes, and there will always be someone fastest to react.
Incidentally, providing liquidity must have been the chief function of the OP's algo - 4000 trades a day doesn't work for a liquidity taker that has to cross the spread. He isn't getting 2000 mis-price signals a day to swing at, good enough to justify crossing the spread. DAX traded 120k contracts yesterday, he would have been averaging 2-3% of daily flow.
I agree that "why" doesn't matter, if you know "what". When you don't however, "why" is a useful predictor.
I understand the value of arbitrage, to some extent. In its current form, it's quite heavy, but I can imagine we're better off allowing it.
We should compensate for value, not for risk. The two are not always correlated. I know trading is risky, but that's not the point. If it doesn't create value, it shouldn't be compensated. And I suspect some forms of trading create little to no value at all.
By itself, closing a deal doesn't mean you provided value. It means the other party thinks you provided value to them . When both parties think that, either it's a win-win situation, or someone got tricked. (Delayed bids and offerings complicate this, but it's the same principle.)
If I got it right, the OP did what we could call "short term speculation". If you predict something will rise, buy from a sucker who didn't. If you predict something will fall, sell it to a sucker who didn't. And of course, pray you are not the sucker. Locally, it's totally zero-sum.
Now maybe the whole system facilitates real transactions (with non-speculators) at the boundaries? But even then, for a given volume your reward doesn't seem to be proportional to your facilitation power (which I have no idea how to compute), but to how well you manage to trick your fellow traders. I very much doubt that such twisted incentives can foster a useful, let alone efficient, system.
Now maybe that little speculator who sold you the share at $10, he goes and works the bid, he advertises that he wants to buy a share at $9. Someone fills him. It take 2 minutes of trading to work to the front of the queue (easily possible with an equity). During that time, he is exposed to the risk that the stock might spike up in price, a risk you are no longer exposed to since you got your desired trade done $1 cheaper and 2 minutes ago. Then if he succeeds he makes his $1 profit. It doesn't always work - maybe 60% of the time the price ticks up and he just breaks even. He pays exchange fees and clearing on both the in and out trades too.
In theory, you could get involved in all of this with your 500 share purchase. Try to work the bid, get a better price, etc. or if you cross you are effectively paying for a service. Every order posted in the market is a service.
How wide are bid/offer spreads these days? How can that possibly be a bad thing?
In your example, it looked like you wanted your 500 share for something else than selling them. So you're talking about "real transactions (with non-speculators) at the boundaries". So yes, those transactions are a useful service provided to you by the speculators. I'm not denying that.
On the other hand, your wording seems to imply that most transactions are of this type (non-speculator with speculator). As far as I understand the system, they are not. If the OP is to be trusted, the vast majority of transactions are between 2 speculators trying to outsmart each other. Do we at least agree on that narrow point?
My second point is that a such a transaction (between 2 speculators) is zero sum. Locally, because whatever the first speculators won, the other lost. And globally, because wherever the share is, it could still be sold to a non-speculator. Making the transaction between speculators doesn't make it any easier. I'd say it could make it harder , for the non-speculators now have to buy the share faster than the speculators (or pay extra to have traders do it for them). Seriously, where is the value in that?
Now maybe a good speculator tends to provide a good service to non-speculators. However, they are not selected by the quality of the service they provide. They are selected by their ability to rip each other off. How quality of service arises from such a cut-throat competition is mysterious to me. (Usually, we compete for quality of service directly, so the connection is obvious. Speculating is not the same thing.)
Many things in our economy can be described as a zero-sum game. Society only needs so much of any given good, and at the retailer level you aren't involved in increasing demand. Two corner stores might get into a price/advertising war, but let's argue that there is still only a fixed amount of product they can sell to a small community. So advertiser's get fat on fees (in our case, exchanges do). So what is the point you ask? Evolution, competition, it can only be good for the consumer. You still haven't disputed that by the way, the consumer wins don't they? How could they possibly have lost? It takes a tin foil hat to think that it isn't better and cheaper to invest now.
" they are not selected by the quality of the service, just ability to rip each other off" - people have a bit of a naive view that there are some sort of magical harlem globetrotter moves you can pull on an order book. The mechanics are dead simple I'm afraid. It isn't chess, not even checkers. You can't even see the other participants, everything is anonymous on the exchanges I've dealt with. Spoofing is illegal, and that is about as clever as it gets. Very little you can do to make your algo better will put it at odds with providing a better quality service.
To prove that, remember the two types of algo. If I write a liquidity provider that doesn't offer a tighter spread than the competition, I will miss out on trade flow and make little or nothing. If I write a liquidity taker that has an opinion that is wrong about the correct value of a security, someone else who is right will smash me. So effectively we are selecting for more liquidity, tighter spreads, and more accurate prices reflecting available information.
But, if I got you right, the anonymity of it all mean we cannot separate the two… hmm… Then we've got to multiply the potential utility of the trade by the (quite low) probability of it being closed by a non-speculator. Still valuable, but much less. And I'm back wondering to what extent this is worth the (collective) effort. You did change my mind a little, though. I'll need to learn more.
& # 62; You still haven't disputed that by the way, the consumer wins don't they? How could they possibly have lost?
The consumer winning does count as creating value. However there are 2 parts in the retail store competition example: the part where they compete on quality, price, diversity… and the part where they pay fat fees to the advertiser. The first part benefits the consumer, the second just add inefficiency in the loop: if both stores could only agree to not use ads, everybody would win.
When Pareto Optimum and Nash Equilibrium are at odds, life sucks.
Комментарии
Отправить комментарий