среда, 27 июня 2018 г.

Aprendizado de máquina para estratégias de negociação


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.

Aprendizado de máquina para estratégias de negociação
Thomas Wiecki mencionou isso alguns anos atrás (ele omitiu os espaços, então procure por "ApplyingdeepLearningtoEnhanceMomentumTradingStrategiesinStocks" no tópico sobre ideias de negociação).
Takeuchi, L., Lee, Y. (2013). Aplicando Aprendizado Profundo para Melhorar as Estratégias de Negociação de Momento em Ações.
Usamos um autoencoder composto de máquinas de Boltzmann restritas empilhadas para extrair características da história dos preços das ações individuais. Nosso modelo é capaz de descobrir uma versão aprimorada do efeito momentum em estoques sem uma extensa engenharia manual de recursos de entrada e entregar um retorno anualizado de 45,93% durante o período de teste 1990-2009 versus 10,53% para o momento básico.
Alguém com um chefe de ciência de dados pode criar uma versão Q disso?
Totalmente fascinante. É impossível comentar nesta fase, mas há um grande número de perguntas para as quais precisarei procurar respostas. Para mim, a frase mais interessante é a seguinte:
nosso modelo não está apenas redescobrindo.
padrões conhecidos nos preços das ações, mas indo além do que.
os seres humanos foram capazes de alcançar.
É REALMENTE possível que o aprendizado profundo obtenha um conjunto simples de retornos e melhore as previsões & quot; feita pela aplicação de uma estratégia de momentum simples? Este artigo parece indicar que esse é o caso.
Tendo lido o artigo duas ou três vezes, ainda não estou claro exatamente o que cada & quot; stack & quot; Na verdade, mas sem dúvida acabarei caindo em algum tipo de conclusão.
Felizmente, este artigo surge em um momento em que eu decidi me aposentar da pesquisa incrivelmente chata que fiz até agora. Eu decidi "aprender & quot; AI e aprendizado profundo. Ou pelo menos tentar.
Estou longe de ter certeza de que tem alguma aplicação para a previsão a longo prazo dos preços das ações, mas este artigo parece sugerir o contrário. Estou ansioso para descobrir se esta pesquisa realmente descobriu o Eldorado ou se outros fatores estão em jogo, o que tornará essa linha de pesquisa tão infrutífera quanto a maioria dos outros nos mercados financeiros.
Treinar uma rede neural profunda em dados quantopianos seria um desafio, a menos que você pudesse executar os notebooks / algoritmos em máquinas com poderosas GPUs conectadas.
Se você tiver acesso off-line a dados de negociação relevantes, poderá treinar uma rede a partir de máquinas não-quântico e, em seguida, converter a rede resultante em ação para execução na estrutura quantopiana.
Muito interessante ler alguns dos outros artigos de Stanford sobre aprendizado profundo aplicado aos mercados. O documento referenciado reivindica pouco mais de uma precisão de classificação de 50% sobre se os negócios acabarão vencedores ou perdedores no mês seguinte. Apenas usando o preço como entrada.
O modelo está correto em 53,84% do tempo quando prevê classe 1 e a.
um pouco inferior a 53,01% do tempo quando prevê a classe 2.
Considere que uma estratégia antiquada típica de tendência antiquada geralmente fornece 40% de negociações e lucros vencedores, vencendo os vencedores e cortando os perdedores.
Se funcionasse em 2013, funcionaria mais? Eu acharia que bancos e corretoras teriam exércitos de PhDs escrevendo código assim.
Muitas pessoas pensam assim. E eu sei o que você quer dizer. Mas se é verdade, então você pode desistir completamente. Como pode Quantopian. Não tenho ideia se ainda funciona, mas pretendo replicar o estudo. Tudo de que tenho certeza é minha própria ignorância.
Houve uma discussão há algum tempo em que alguém tentou isso usando uma das bibliotecas de aprendizado de máquina em um único estoque:
Prevendo movimentos de preços via Regimes e Machine Learning.
Pode ser um bom lugar para começar.
Corre muito devagar. Para acelerar as coisas, você pode querer baixar os dados de preços do EOData (ou outro site) e trabalhar a partir dele em sua própria máquina.
Anthony, eu encontrei este código de aprendizado de máquina em Python (e o curso MOOC associado) e achei que você poderia achá-lo útil: johnwittenauer / machine-learning-exercises-in-python-part-1 /
Outro grupo postou números de precisão ainda melhores (82% vs 53%). Não tenho certeza sobre a qualidade embora.
Você provavelmente poderia apenas falar com os autores sobre sua implementação.
RBMs podem ser feitos em R com deepnet.
Interessante. A metodologia da ligação Springer também se baseia no preço apenas como insumo, embora talvez não devamos nos surpreender com a exatidão imensamente maior: isso está previsto 1 minuto à frente, enquanto o projeto Lee prevê um mês à frente.
Estou me concentrando em Python, Keras e Theano. bem como skLearn.
O papel está disponível gratuitamente em algum lugar?
@Anthony - Sim, algumas implementações de diferenças. Python pode fazer chamadas para R se precisar. Tentei usar o PDNN para python?
Meu conhecimento atual é infantil. Estou começando do zero em todo o tópico e construindo RNAs a partir do zero para a experiência de usar alguns livros didáticos do Noddy. Estou interessado em todo o campo, de modo a olhar para quaisquer tecnologias ML que possam ser úteis, incluindo mecanismos de argolas.
A minha suspeita é que, no que diz respeito ao investimento a longo prazo, tudo isto será uma perda de tempo. Ou melhor, que não me proporcionará retornos ajustados ao risco melhor do que o sistema simples 50/50 que descrevi no meu site.
Mas vamos ver. Eu estou tão ansioso para acender as luzes como qualquer outra pessoa, mas sei por experiência que estes empreendimentos geralmente acabam de forma bastante diferente do que se poderia esperar!
Quando eu estiver um pouco mais longe, entrarei em contato com Takeutchi Lee e verei o que ele fez (com alguma coisa) com a estratégia delineada. Eu me pergunto se ele realmente trocou isso? Seja para si ou para seus empregadores.
@Patrick: Obrigado.
Puxa, eu notei isso no artigo mencionado:
Os dados usados ​​para treinamento e testes são as transações tick-by-tick da AAPL.
de setembro a novembro de 2008.
1 estoque testado por 3 meses! Surpreende-me que eles não levaram um pouco mais longe do que isso, mas quem sabe, talvez, o resultado teria sido o mesmo para diferentes ações e períodos?
Oi Anthony e grupo. Dois problemas:
Quantos ensaios foram envolvidos para alcançar esse desempenho superior? Isso nao esta claro. Eles ajustaram os parâmetros do RBM até obterem o resultado desejado? Além do viés de antecipação, que eles afirmam não ser um problema, há também viés de snooping e seleção de dados. Na verdade, o viés de seleção pode ser muito grande.
O documento foi publicado no final de 2013, mas a amostra de amostra de teste terminou em 2009. Não há razão para isso, exceto no caso em que o desempenho superior veio de vendas a descoberto durante os mercados de baixa de 2000 e 2008, caso em que desapareceu após 2009
As alegações de desempenho superior do momentum por parte dos Glabadanidis foram recentemente desmascaradas pelo Prof. Zakamulin depois que ele mostrou que havia um viés antecipado nos cálculos. Mais sobre isso e outras questões, também sobre condições especiais de mercado que dão origem a altas estatísticas t, no meu recente artigo, papers. ssrn / sol3 / papers. cfm? Abstract_id = 2810170.
Alguém já examinou a techno proposta por Lee et al. Estou tendo uma oportunidade (usando dados Quandl gratuitos), mas acho difícil encontrá-lo. Eu posso lidar com os aspectos do ML. Mas não sei ao certo como eles estão empacotando os dados.
Eu acho que é algo assim:
Para um determinado momento no tempo para uma determinada ação, podemos construir um item de treinamento (rotulado) usando os 13 meses anteriores (e o valor subseqüente de 1 mês) de dados diários para essa ação.
Usamos esses dados para construir 12 retornos acumulados mensais terminando um mês a menos do que o nosso momento. Então, suponho que apenas adicione preços diários Adj_Close & amp; cuspa o valor a cada 30 ou mais passes. Agora fica interessante. Eles fazem a mesma coisa para todas as outras ações neste momento, e obtêm um valor z para nosso estoque sobre este conjunto (ou seja, # de desvios padrão da média). Assim, o movimento desse valor-z está mostrando o crescimento desse estoque particular em relação ao mercado inteiro. Uma vez que o algoritmo vai ser investido uma certa quantia de dinheiro no mercado, e apenas mudando-o entre ações, é isso que você quer!
Parece que eles fazem isso para cada um dos 12 cumrets mensais.
E então eles fazem o mesmo processo nos últimos 30 dias.
Isso realmente faz muito sentido, porque você quer estar se alimentando de dados com média 0 ao redor do intervalo (-1, +1) em seu NN.
Então, isso abrange dados de entrada. (há uma entrada extra que é um sinalizador de início de ano. Mas um item completo de treinamento de supervisor também requer um valor de saída associado. Parece que eles estão apenas usando se esse estoque específico subiu No mês seguinte, embora eu não entenda o idioma deles, eles falam sobre "acima da média". o preço um mês depois é maior ou menor do que o preço neste momento em particular e a saída 1 ou 0 de acordo com isso? Acho que é isso que irei fazer, pois não entendo o que eles estão dizendo.
Então eu só posso supor que tudo é desviado para a frente por um único dia no algoritmo é repetido para gerar outra amostra.
Parece estranho para mim que eles não façam uso do volume diário.

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 do comércio 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 conta é 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 & alpha8; 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 diz-se que tem 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ê paga mais de US $ 4,95 por transação, você está 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.

Комментариев нет:

Отправить комментарий