Aprendizado de Máquina para Negociação & # 8211; Visão geral do tópico.
Inteligência Artificial (IA) e Aprendizado de Máquina (ML) estão silenciosamente revolucionando quase todas as áreas de nossas vidas. Você sabia que o Machine Learning para negociação está ficando cada vez mais importante?
Você pode se surpreender ao saber que os fundos hedge de Machine Learning já superaram significativamente os fundos de hedge generalizados, assim como os fundos quant tradicionais, de acordo com um relatório da ValueWalk. Os sistemas ML e AI podem ser ferramentas incrivelmente úteis para os seres humanos que navegam no processo de tomada de decisão envolvido em investimentos e avaliação de risco.
O impacto das emoções humanas nas decisões de negociação é frequentemente o maior obstáculo ao desempenho superior. Algoritmos e computadores tomam decisões e executam negócios com mais rapidez do que qualquer humano, e o fazem livres da influência das emoções.
Existem vários tipos diferentes de negociação algorítmica. Alguns exemplos são os seguintes:
Algoritmos de execução de negócios, que dividem as negociações em ordens menores para minimizar o impacto no preço das ações. Um exemplo disso é uma estratégia de Preço Médio Ponderado por Volume (VWAP). Algoritmos de implementação de estratégia que fazem negociações com base em sinais de dados de mercado em tempo real. Exemplos disso são estratégias baseadas em tendências que envolvem médias móveis, interrupções de canais, movimentos de níveis de preços e outros indicadores técnicos. Algoritmos furtivos / de jogos que são voltados para detectar e aproveitar os movimentos de preços causados por grandes negociações e / ou outras estratégias de algoritmo. Oportunidades de arbitragem. Um exemplo seria onde uma ação pode ser negociada em dois mercados separados por dois preços diferentes e a diferença no preço pode ser capturada pela venda de ações com preço mais alto e pela compra de ações com preços mais baixos.
Quando as estratégias de negociação algorítmica foram introduzidas pela primeira vez, elas foram altamente lucrativas e rapidamente ganharam participação de mercado. Em maio de 2017, a Tabb Group, empresa de pesquisa de mercado de capitais, disse que as transações de alta frequência (HFT) representaram 52% do volume médio diário negociado. Mas como a concorrência aumentou, os lucros diminuíram. Neste ambiente cada vez mais difícil, os comerciantes precisam de uma nova ferramenta para lhes dar uma vantagem competitiva e aumentar os lucros. A boa notícia é que a ferramenta está aqui agora: Machine Learning.
O Aprendizado de Máquina envolve a alimentação de amostras de dados de algoritmos, geralmente derivados de preços históricos. As amostras de dados consistem em variáveis chamadas preditores, bem como uma variável de destino, que é o resultado esperado. O algoritmo aprende a usar as variáveis preditoras para prever a variável de destino.
O Aprendizado de Máquina oferece o número de vantagens importantes sobre os programas algorítmicos tradicionais. O processo pode acelerar a busca por estratégias efetivas de negociação algorítmica, automatizando o que geralmente é um processo tedioso e manual. Também aumenta o número de mercados que um indivíduo pode monitorar e responder. Mais importante ainda, eles oferecem a capacidade de passar de encontrar associações baseadas em dados históricos para identificar e adaptar-se às tendências à medida que se desenvolvem. Se você puder automatizar um processo que outras pessoas estão executando manualmente; você tem uma vantagem competitiva. Se você puder aumentar o número de mercados em que você está, terá mais oportunidades. E no mundo da negociação de soma zero, se você puder se adaptar às mudanças em tempo real enquanto os outros estão parados, sua vantagem se traduzirá em lucros.
Existem várias estratégias que usam o Aprendizado de Máquina para otimizar algoritmos, incluindo regressões lineares, redes neurais, aprendizado profundo, máquinas de vetores de suporte e Bayes ingênuos, para citar apenas alguns. E fundos bem conhecidos, como Citadel, Renaissance Technologies, Bridgewater Associates e Two Sigma Investments, estão buscando estratégias de Aprendizado de Máquina como parte de sua abordagem de investimento. Na Sigmoidal, temos a experiência e o know-how para ajudar os traders a incorporar o ML em suas próprias estratégias de negociação.
Nosso estudo de caso.
Em um de nossos projetos, criamos um sistema inteligente de alocação de ativos que utilizou a teoria da aprendizagem profunda e da carteira moderna. A tarefa era implementar uma estratégia de investimento que pudesse se adaptar a mudanças rápidas no ambiente de mercado.
O modelo básico de IA foi responsável por prever retornos de ativos com base em dados históricos. Isso foi conseguido com a implementação de Unidades de Memória de Longo Prazo de Longo Prazo, que são uma sofisticada generalização de uma Rede Neural Recorrente. Essa arquitetura específica pode armazenar informações para vários timesteps, o que é possível por uma célula de memória. Essa propriedade permite que o modelo aprenda padrões temporais longos e complicados em dados. Como resultado, pudemos prever os retornos futuros do ativo, bem como a incerteza de nossas estimativas, usando uma nova técnica chamada Variational Dropout.
A fim de fortalecer nossas previsões, usamos uma riqueza de dados de mercado, como moedas, índices, etc. em nosso modelo, além dos retornos históricos de ativos relevantes. Isso resultou em mais de 400 recursos que usamos para fazer previsões finais. Naturalmente, muitos desses recursos foram correlacionados. Esse problema foi mitigado pela Análise de Componentes Principais (PCA), que reduz a dimensionalidade do problema e correlaciona os recursos.
Em seguida, usamos as previsões de retorno e risco (incerteza) para todos os ativos como entradas para um algoritmo de otimização de média-variância, que usa um solucionador quadrático para minimizar o risco de um dado retorno. Este método determina a alocação de ativos, que é diversa e garante o menor nível possível de risco, dados os retornos & # 8217; previsões.
A combinação desses modelos criou uma estratégia de investimento que gerou um retorno anualizado de 8%, que foi 23% maior do que qualquer outra estratégia de benchmark testada em um período de dois anos. Contacte-nos para saber mais.
Estratégias AI superam.
É difícil encontrar dados de desempenho para estratégias de IA, dada a sua natureza proprietária, mas a empresa de pesquisa de fundos de hedge Eurekahedge publicou alguns dados informativos. O gráfico abaixo mostra o desempenho do Eurekahedge AI / Machine Learning Hedge Fund Index vs. quant e hedge funds tradicionais de 2010 a 2016. O Índice registra 23 fundos no total, dos quais 12 continuam ativos.
Eurekahedge observa que:
“Os hedge funds AI / Machine Learning têm superado os tradicionais e os hedge funds desde 2010, obtendo retornos anualizados de 8,44% neste período, comparados com 2,62%, 1,62% e 4,27% para os seguidores de tendência do CTA e o hedge médio global. fundos, respectivamente. ”
Eurekahedge também fornece a tabela a seguir com as principais conclusões:
Tabela 1: Desempenho em números - AI / Machine Learning Hedge Fund Index vs. quants e hedge funds tradicionais Fonte: Eurekahedge.
Os fundos hedge de IA / Aprendizagem Automática superaram o fundo de hedge global médio para todos os anos, exceto 2012. Com exceção de 2011 e 2014, os retornos de fundos de hedge de AI / Machine Learning ultrapassaram os tradicionais para estratégias de futuros geridos pelo CTA, enquanto obtiveram desempenho abaixo do esperado. o ano de 2014, quando este último realizou fortes ganhos de futuros de energia curta. Durante os cinco, três e dois anos do período anualizado, os fundos hedge de IA / Machine Learning superaram os quants tradicionais e os hedge funds globais médios, obtendo ganhos anualizados de 7,35%, 9,57% e 10,56%, respectivamente, durante esses períodos. Os fundos hedge de IA / Aprendizagem Automática também apresentaram melhores retornos ajustados ao risco nos últimos períodos de dois e três anos, comparados com todos os pares descritos na tabela abaixo, com as taxas de Sharpe de 1,51 e 1,53 nos dois períodos, respectivamente. Embora os retornos tenham sido mais voláteis em comparação com o fundo de hedge médio (compare com o Eurekahedge Hedge Fund Index), os fundos de AI / Machine Learning registraram volatilidades anualizadas consideravelmente mais baixas em comparação com as estratégias de acompanhamento de tendências sistemáticas.
Eurekahedge também observa que os fundos de hedge de Aprendizado de Máquina / Aprendizado estão “negativamente correlacionados ao fundo de hedge médio (-0.267)” e têm “correlação zero-a-marginalmente positiva com futuros geridos pelo CTA e estratégias de seguimento de tendência”, que apontam para o benefícios potenciais de diversificação de uma estratégia de IA.
Os dados acima ilustram o potencial em utilizar AI e Machine Learning em estratégias de negociação. Felizmente, os traders ainda estão nos estágios iniciais de incorporação dessa poderosa ferramenta em suas estratégias de negociação, o que significa que a oportunidade permanece relativamente inexplorada e o potencial significativo.
Aqui está um exemplo de uma aplicação de IA na prática:
Imagine um sistema que possa monitorar os preços das ações em tempo real e prever os movimentos dos preços das ações com base no fluxo de notícias. É exatamente isso que o AZFinText faz. Este artigo relata um experimento que usou o Support Vector Machine (SVM) para negociar o S & amp; P-500 e obteve excelentes resultados. Abaixo está a tabela que mostra como é realizada em relação aos 10 principais fundos mútuos quantitativos do mundo:
Estratégia usando o Google Trends.
Outra estratégia de negociação experimental usou o Google Trends como uma variável. Há uma infinidade de artigos sobre o uso do Google Trends como um indicador de sentimento de um mercado.
O experimento deste artigo rastreou mudanças no volume de busca de um conjunto de 98 termos de pesquisa (alguns deles relacionados ao mercado de ações). O termo & # 8220; dívida & # 8221; acabou por ser o indicador mais forte e mais confiável ao prever os movimentos de preços no DJIA.
Abaixo está um gráfico de desempenho acumulado. A linha vermelha representa um & # 8220; Compre e segure & # 8221; estratégia. A estratégia do Google Trends (linha azul) superou maciçamente com um retorno de 326%.
Posso aprender ML pessoalmente?
Aplicando Machine Learning para negociação é um topis vasto e complicado que leva o tempo para dominar. Mas se você estiver interessado, como ponto de partida, recomendamos:
Uma vez que você esteja familiarizado com esses materiais, há também um curso popular da Udacity sobre como aplicar a base do Machine Learning ao mercado de negociação.
Se você quer acelerar o processo de aprendizagem, você pode contratar um consultor. Certifique-se de fazer perguntas difíceis antes de iniciar um projeto.
Ou você pode agendar uma pequena ligação conosco para explorar o que pode ser feito.
Preciso de exemplos mais específicos aplicáveis no meu setor.
Ao incorporar o Aprendizado de Máquina em suas estratégias de negociação, seu portfólio pode capturar mais alfa. Mas implementar uma estratégia de investimento de sucesso é difícil - você precisará de pessoas extraordinárias e talentosas com experiência em comércio e ciência de dados para chegar lá. Deixe-nos ajudar você a começar.
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 rentabilidade. 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 um "manual". 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 criei 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 tela de uma janela de negociação T4. O que foi legal é que quando eu comecei meu programa trabalhando eu pude assistir o comércio de computador exatamente nesta mesma interface. Assistir ordens reais entrando e saindo (por conta própria com meu dinheiro real) era ao mesmo tempo emocionante e assustador.
O design do meu algoritmo.
Desde o início, meu objetivo era configurar um sistema de modo que eu pudesse estar razoavelmente confiante de que ganharia dinheiro antes de fazer qualquer negociação ao vivo. Para conseguir isso, eu precisava construir uma estrutura de simulação de negociação que simulasse a negociação ao vivo, com a maior precisão possível.
Enquanto a negociação no modo ao vivo exigia atualizações do mercado de processamento transmitidas pela API, o modo de simulação exigia a leitura das atualizações do mercado a partir de um arquivo de dados. Para coletar esses dados, configurei a primeira versão do meu programa para simplesmente conectar-me à API e registrar as atualizações do mercado com registros de data e hora. Acabei usando 4 semanas de dados de mercado recentes para treinar e testar meu sistema.
Com uma estrutura básica em vigor, ainda tinha a tarefa de descobrir como criar um sistema comercial lucrativo. Acontece que meu algoritmo se dividiria em dois componentes distintos, que eu exploraria por sua vez:
Previsão de movimentos de preços; e Fazendo negócios lucrativos.
Previsão de movimentos de preços.
Talvez um componente óbvio de qualquer sistema de negociação seja a capacidade de prever onde os preços irão se mover. E o meu não foi exceção. Eu defini o preço atual como a média do lance interno e da oferta interna e estabeleci a meta de prever onde o preço estaria nos próximos 10 segundos. Meu algoritmo precisaria apresentar essa previsão momento a momento ao longo do dia de negociação.
Criando & amp; otimização de indicadores.
Eu criei um punhado de indicadores que provaram ter uma capacidade significativa de prever movimentos de preços de curto prazo. Cada indicador produziu um número que foi positivo ou negativo. Um indicador era útil se, na maior parte dos casos, um número positivo correspondesse ao aumento do mercado e um número negativo correspondesse à queda do mercado.
Meu sistema me permitiu determinar rapidamente a capacidade preditiva de qualquer indicador, por isso pude experimentar muitos indicadores diferentes para ver o que funcionava. Muitos dos indicadores tinham variáveis nas fórmulas que os produziam e eu consegui encontrar os valores 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 realizar isso, acompanhei as movimentações de preço previstas em 50 intervalos que dependiam do intervalo em que o valor do indicador caiu. Isso gerou previsões incorretas para cada depósito que eu era capaz de representar graficamente no Excel. Como você pode ver, a mudança de preço esperada aumenta à medida que o valor do indicador aumenta.
Com base em um gráfico como esse, consegui fazer uma fórmula para ajustar a curva. No começo eu fiz isso "ajuste de curva". manualmente, mas logo escrevi algum código para automatizar esse processo.
Note que nem todas as curvas do indicador tinham a mesma forma. Observe também que os buckets foram distribuídos logaritmicamente para distribuir os dados de maneira uniforme. Por fim, observe que os valores dos indicadores negativos (e suas previsões de preços descendentes correspondentes) foram invertidos e combinados com os valores positivos. (Meu algoritmo tratado para cima e para baixo exatamente o mesmo.)
Combinando indicadores para uma única previsão.
Uma coisa importante a considerar era que cada indicador não era totalmente independente. Eu não poderia simplesmente somar todas as previsões que cada indicador fez individualmente. A chave era descobrir o valor preditivo adicional que cada indicador tinha além do que já estava previsto. Isso não era difícil de implementar, mas significava que se eu estivesse "ajustando a curva", vários indicadores ao mesmo tempo, tive que ser cuidadoso; a mudança de um efetuaria as previsões de outro.
Para ajustar a curva & rdquo; Todos os indicadores ao mesmo tempo eu configurei o otimizador para pisar apenas 30% do caminho para as novas curvas de previsão com cada passagem. Com esse salto de 30%, descobri que as curvas de previsão se estabilizariam em poucas passagens.
Com cada indicador nos dando agora a previsão adicional de preço, eu poderia simplesmente adicioná-los para produzir uma única previsão de onde o mercado estaria em 10 segundos.
Por que prever preços não é suficiente.
Você pode pensar que com essa vantagem no mercado eu era de ouro. Mas você precisa ter em mente que o mercado é composto de ofertas e ofertas - não é apenas um preço de mercado. Sucesso na negociação de alta freqüência se resume a obter bons preços e não é assim tão fácil.
Os fatores a seguir dificultam a criação de um sistema lucrativo:
Com cada negócio eu tive que pagar comissões ao meu corretor e à bolsa. O spread (diferença entre oferta mais alta e oferta mais baixa) significava que se eu simplesmente comprasse e vendesse aleatoriamente, estaria perdendo uma tonelada de dinheiro. A maior parte do volume do mercado era de outros bots que só fariam uma troca comigo se achassem que tinham alguma vantagem estatística. Vendo uma oferta não garante que eu poderia comprá-lo. No momento em que minha ordem de compra chegou à bolsa, era muito possível que essa oferta tivesse sido cancelada. Como um pequeno participante do mercado, não havia como competir sozinho com a velocidade.
Construindo uma simulação de negociação completa.
Então eu tive uma estrutura que me permitiu backtest e otimizar os indicadores. Mas eu tive que ir além disso - eu precisava de um framework que me permitisse fazer backtest e otimizar um sistema de negociação completo; aquele em que eu estava mandando pedidos e ficando em posições. Neste caso, eu estaria otimizando para P & amp; L total e, em certa medida, P & amp; L médio por negociação.
Isso seria mais complicado e, de certa forma, impossível modelar exatamente, mas eu fiz o melhor que pude. Aqui estão alguns dos problemas que eu tive que lidar:
Quando um pedido foi enviado ao mercado na simulação, tive que modelar o tempo de atraso. O fato de meu sistema ter visto uma oferta não significa que ela poderia comprá-la imediatamente. O sistema enviaria o pedido, aguardaria aproximadamente 20 milissegundos e somente se a oferta ainda estivesse lá era considerado como um negócio executado. Isso era inexato porque o tempo real de atraso era inconsistente e não relatado. Quando eu fiz lances ou ofertas, tive que olhar para o fluxo de execução de negociação (fornecido pela API) e usá-los para avaliar quando meu pedido seria executado. Para fazer isso direito eu tive que rastrear a posição do meu pedido na fila. (É um sistema first-in first-out). Novamente, eu não pude fazer isso perfeitamente, mas fiz uma melhor aproximação.
Para refinar minha simulação de execução de pedidos, o que fiz foi extrair meus arquivos de log da negociação ao vivo pela API e compará-los aos arquivos de log produzidos pela negociação simulada no mesmo período de tempo. Consegui obter minha simulação ao ponto de ser bastante precisa e, para as partes que eram impossíveis de modelar exatamente, certifiquei-me de, pelo menos, produzir resultados que fossem estatisticamente semelhantes (nas métricas que julguei importantes).
Fazendo negócios lucrativos.
Com um modelo de simulação de pedidos, agora eu poderia enviar pedidos no modo de simulação e ver um P & amp; Mas como meu sistema saberia quando e onde comprar e vender?
As previsões do movimento de preços foram um ponto de partida, mas não toda a história. O que eu fiz foi criar um sistema de pontuação para cada um dos 5 níveis de preço na oferta e oferta. Estes incluíram um nível acima da oferta interna (para uma ordem de compra) e um nível abaixo da oferta interna (para uma ordem de venda).
Se a pontuação de um determinado nível de preço estiver acima de um determinado 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, é bastante comum ouvir conversas sobre o preço em que alguém é comprido ou pequeno, como se isso pudesse afetar sua futura tomada de decisão. Embora isso tenha alguma validade como parte de uma estratégia de redução de riscos, ela realmente não tem relação com o curso futuro dos eventos no mercado. Portanto, meu programa ignorou completamente essa informação. É o mesmo conceito que ignorar os custos irrecuperáveis. Indo curto vs. saindo de uma posição longa - Tipicamente um trader teria critérios diferentes que determinam onde vender uma posição comprada versus onde ir short. No entanto, da minha perspectiva de algoritmos, não havia razão para fazer uma distinção. Se meu algoritmo esperava um movimento descendente, a venda era uma boa ideia, independentemente de ser atualmente longa, curta ou plana. A & ldquo; dobrando & rdquo; estratégia - Esta é uma estratégia comum, onde os comerciantes vão comprar mais ações no caso de que o comércio original vai contra eles. Isso faz com que o preço médio de compra seja menor e isso significa que quando (ou se) a ação girar, você estará pronto para recuperar seu dinheiro rapidamente. Na minha opinião, esta é realmente uma estratégia horrível, a menos que você esteja Warren Buffet. Você é levado a pensar que está indo bem porque a maioria de seus negócios será vencedora. O problema é quando você perde você perde grande. O outro efeito é que torna difícil julgar se você realmente tem uma vantagem no mercado ou está apenas tendo sorte. Ser capaz de monitorar e confirmar se meu programa realmente tinha uma vantagem era uma meta importante.
Como meu algoritmo tomava decisões da mesma forma, independentemente de onde ele entrasse em uma negociação ou se era atualmente longo ou curto, ocasionalmente ele fazia parte (e tomava) de algumas grandes negociações perdedoras (além de algumas grandes negociações vencedoras). Mas, você não deve pensar que não houve nenhum gerenciamento de risco.
Para gerenciar o risco, impus um tamanho máximo de posição de dois contratos por vez, ocasionalmente aumentado em dias de alto volume. Eu também tinha um limite máximo de perda diária para proteger contra condições inesperadas de mercado ou um bug no meu software. Esses limites foram aplicados no meu código, mas também no backend por meio do meu corretor. Aconteceu que nunca encontrei problemas significativos.
A partir do momento em que comecei a trabalhar no meu programa, demorei cerca de 6 meses até 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 criava 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.
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.
Note que este curso atende estudantes com foco em ciência da computação, assim 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.
Комментариев нет:
Отправить комментарий