Estratégias De Aprendizado De Máquina Em Negociação
Não tenho muita certeza, se esta pergunta entrar aqui. Comecei recentemente, lendo e aprendendo sobre aprendizagem de máquinas. Alguém pode lançar alguma luz sobre como ir sobre isso ou melhor, alguém pode compartilhar sua experiência e algumas dicas básicas sobre como ir sobre isso ou, pelo menos, começar a aplicá-lo para ver alguns resultados de conjuntos de dados Como é ambicioso isso soa. Além disso, mencione sobre Algoritmos padrão que devem ser experimentados ou examinados ao fazer isso. Perguntei 11 de fevereiro às 18:35 Parece haver uma falácia básica que alguém pode vir junto e aprender alguma aprendizagem em máquina ou algoritmos AI, configurá-los como uma caixa preta, ir e sentar-se enquanto eles se aposentam. Meu conselho para você: Saiba as estatísticas e o aprendizado da máquina primeiro, e então se preocupe com a forma de aplicá-los a um determinado problema. Não há almoço grátis aqui. A análise de dados é um trabalho árduo. Leia The Elements of Statistical Learning (o pdf está disponível gratuitamente no site), e não comece a tentar construir um modelo até que você entenda pelo menos os primeiros 8 capítulos. Depois de entender as estatísticas e o aprendizado da máquina, você precisa aprender a testar e construir um modelo de negociação, responsável pelos custos de transação, etc., que é uma outra área. Depois de ter um controle sobre a análise e as finanças, então será um pouco óbvio como aplicá-lo. O ponto inteiro desses algoritmos está tentando encontrar uma maneira de ajustar um modelo aos dados e produzir baixa tendência e variância na predição (ou seja, que o treinamento eo erro de previsão do teste serão baixos e similares). Aqui está um exemplo de um sistema comercial usando uma máquina de vetores de suporte em R., mas basta ter em mente que você estará se fazendo um grande desserviço se você não gastar o tempo para entender o básico antes de tentar aplicar algo esotérico. Apenas para adicionar uma atualização divertida: recentemente encontrei esta tese de mestrado: uma nova estrutura de negociação algorítmica aplicando evolução e aprendizado de máquinas para otimização de portfólio (2012). É uma revisão extensa de diferentes abordagens de aprendizado de máquinas em comparação com a compra e retenção. Após quase 200 páginas, eles alcançaram a conclusão básica: nenhum sistema de negociação foi capaz de superar o benchmark ao usar os custos de transação. Escusado será dizer que isso não significa que não pode ser feito (eu não passei a qualquer momento revisando seus métodos para ver a validade da abordagem), mas certamente fornece mais evidências a favor do teorema do almoço sem reservas. Respondeu 11 de fevereiro às 18:48 Jase Como um dos autores da tese de mestrado mencionada, posso citar o meu próprio trabalho e dizer: "Se alguém realmente consegue resultados lucrativos, não há incentivo para compartilhá-los, pois negaria sua vantagem." Embora nossos resultados possam dar suporte à hipótese do mercado, isso não exclui a existência de sistemas que funcionem. Pode ser como a teoria da probabilidade: é especulado que avanços no campo da teoria da probabilidade aconteceram várias vezes, mas nunca foram compartilhados. Isso pode ser devido à sua aplicação prática no jogo. Então, novamente, talvez esta seja a alquimia moderna. Ndash Andr233 Christoffer Andersen 30 de abril 13 às 10:01 Meu conselho para você: Existem vários ramos de Aprendizado de Aprendizagem de Máquina (MLAI): Shenzhen-formal. stanford. edujmcwhatisainode2.html Eu tentei apenas programação genética e algumas redes neurais, e Eu pessoalmente acho que o aprendizado do ramo de experiências parece ter o maior potencial. O GPGA e as redes neurais parecem ser as metodologias mais comumente exploradas para fins de previsões do mercado de ações, mas se você fizer alguma mineração de dados em Predict Wall Street. Você também poderá fazer algumas análises de sentimentos. Passe algum tempo aprendendo sobre as várias técnicas de MLAI, encontre alguns dados de mercado e tente implementar alguns desses algoritmos. Cada um terá seus pontos fortes e fracos, mas você pode combinar as previsões de cada algoritmo em uma previsão composta (semelhante ao que os vencedores do Prêmio NetFlix fizeram). Alguns recursos: Aqui estão alguns recursos que você pode querer procurar: The Chatter: O consenso geral entre os comerciantes é que a Inteligência Artificial é uma ciência voodoo, você não pode fazer um computador prever os preços das ações e você tem certeza de perder seu dinheiro se você tentar Fazendo. No entanto, as mesmas pessoas vão dizer-lhe que apenas a única maneira de ganhar dinheiro no mercado de ações é construir e melhorar a sua própria estratégia comercial e segui-la de perto (o que na verdade não é uma má idéia). A idéia de algoritmos AI não é construir Chip e deixá-lo negociar para você, mas para automatizar o processo de criação de estratégias. É um processo muito tedioso e, de modo algum, é fácil :). Minimização de superposição: como já foi ouvido antes, uma questão fundamental com os algoritmos de AI é a sobreposição (também conhecido como viés de datamining): dado um conjunto de dados, seu algoritmo AI pode encontrar um padrão particularmente relevante para o conjunto de treinamento. Mas pode não ser relevante no conjunto de teste. Há várias maneiras de minimizar a superposição: use um conjunto de validação. Não dá feedback ao algoritmo, mas permite que você detecte quando seu algoritmo está potencialmente começando a superar (ou seja, você pode parar de treinar se você estiver superando demais). Use a aprendizagem em linha da máquina. Ele elimina em grande parte a necessidade de back-testing e é muito aplicável para algoritmos que tentam fazer previsões de mercado. Ensemble Learning. Fornece uma maneira de tomar vários algoritmos de aprendizado de máquina e combinar suas previsões. O pressuposto é que vários algoritmos podem ter superado os dados em alguma área, mas a combinação correta de suas previsões terá melhor poder preditivo. Dois aspectos da aprendizagem estatística são úteis para a comercialização. Primeiro, os mencionados anteriormente: alguns métodos estatísticos focados no trabalho em conjuntos de dados ao vivo. Isso significa que você sabe que está observando apenas uma amostra de dados e que deseja extrapolar. Você, portanto, tem que lidar com problemas de amostragem e sem amostras, superação e assim por diante. A partir deste ponto de vista, a mineração de dados é mais focada em conjuntos de dados mortos (ou seja, você pode ver quase todos os dados, você tem um problema apenas na amostra) do que a aprendizagem estatística. Como o aprendizado estatístico é sobre o trabalho no conjunto de dados ao vivo, as matemáticas aplicadas que lidam com eles tiveram que se concentrar em um problema de duas escalas: amplificador X X amp. Ftheta (Xn, xi) ampamp L (pi (Xn), n) final direito. Onde X é o espaço de estado (multidimensional) para estudar (você tem nelas suas variáveis explicativas e as que predizem), F contém a dinâmica de X que precisa de alguns parâmetros theta. A aleatoriedade de X vem da inovação xi, que é i. i.d. O objetivo do aprendizado estatístico é construir uma metodologia, como entradas uma observação parcial pi de X e ajustar progressivamente uma estimativa de hattheta de theta, para que possamos saber tudo o que for necessário no X. Se você pensa em usar a aprendizagem estatística para encontrar Os parâmetros de uma regressão linear. Nós podemos modelar o espaço de estado como este: underbrace yx end right) left start a amp b amp 1 1 amp 0 amp 0 end right cdot underbrace x 1 epsilon end right) o que permite observar (y, x) n em qualquer n Aqui theta (a, b). Então você precisa encontrar uma maneira de construir progressivamente um estimador de theta usando nossas observações. Por que não uma descida de inclinação na distância L2 entre y e a regressão: C (hat a, hat b) n sum (yk - (hat a, xk hat b)) 2 Aqui gamma é um esquema de ponderação. Normalmente, uma boa maneira de construir um estimador é escrever corretamente os critérios para minimizar e implementar uma descida de gradiente que produza o esquema de aprendizagem L. Voltando ao nosso problema genérico original. Precisamos de algumas matemáticas aplicadas para saber quando os sistemas dinâmicos de casal em (X, hattheta) convergem, e precisamos saber como construir esquemas de estimativa L que convergem para a teta original. Para dar-lhe indicadores sobre esses resultados matemáticos: agora podemos voltar para o segundo aspecto da aprendizagem estatística que é muito interessante para as tradersstrategists quant: 2. Os resultados utilizados para comprovar a eficiência dos métodos de aprendizagem estatística podem ser usados para comprovar a eficiência de Algoritmos de negociação. Para ver isso, basta ler de novo o sistema dinâmico acoplado que permite escrever o aprendizado estatístico: M ampamp esquerdo ampère (Mn, xi) amplificador L (pi (Mn), n) final direito. Agora M são variáveis de mercado, rho é PnL subjacente, L é uma estratégia de negociação. Basta substituir minimizar um critério ao maximizar o PnL. Veja, por exemplo, a divisão ótima de pedidos em pools de liquidez: uma abordagem de algoritmo stochatico por: Gilles Pags, Sophie Laruelle, Charles-Albert Lehalle. Neste artigo, os autores mostram quem usará essa abordagem para dividir de forma otimizada um pedido em diferentes pools escuros simultaneamente, aprendendo a capacidade dos pools para fornecer liquidez e usando os resultados para negociar. As ferramentas de aprendizagem estatística podem ser usadas para construir estratégias negociais iterativas (a maioria delas é iterativa) e provar sua eficiência. A resposta curta e brutal é: você não. Primeiro, porque ML e Statistics não é algo que você pode controlar bem em um ou dois anos. O meu horizonte de tempo recomendado para aprender algo não-trivial é de 10 anos. Não seja uma receita para ganhar dinheiro, mas apenas outro meio para observar a realidade. Em segundo lugar, porque qualquer bom estatístico sabe que a compreensão dos dados eo domínio do problema é de 80 do trabalho. É por isso que você tem estatísticos que se concentram na análise de dados da Física, na genômica, no sabermetrics etc. Para o registro, Jerome Friedman, co-autor da ESL citada acima, é um físico e ainda possui uma posição de cortesia no SLAC. Então, estude estatísticas e finanças por alguns anos. Seja paciente. Siga seu próprio caminho. O quilometragem pode variar. Respondeu 9 de fevereiro às 4:41 eu concordo totalmente. Só porque você conhece o aprendizado da máquina e as estatísticas, isso não implica que você saiba como aplicá-lo para financiar. Ndash Dr. Mike 10 de agosto 11 às 20:25 Também é importante lembrar que você não deve negociar contra pessoas, você estará negociando contra outros algoritmos de inteligência artificial que estão observando seus negócios, e estão calculando furiosamente as chances de que o O ataque coletivo seria assustado por um declínio fabricado e levando essa pequena perda na criação de um spikedip e enganar todos aqueles AI39s para parar e, em seguida, rolando o mergulho de volta para ele e montar a onda, ganhando suas perdas. O mercado de ações é um jogo de soma zero, trate-o como entrar em uma partida profissional de boxe, se você não tiver um veterano de 20 anos, você vai perder o ndash Eric Leschinski 13 de fevereiro 16 às 1:56 Uma aplicação básica é a previsão de sofrimento financeiro. Obter um monte de dados com algumas empresas que falharam, e outras que não têm, com uma variedade de informações e índices financeiros. Use um método de aprendizagem de máquina, como SVM, para ver se você pode prever quais empresas serão padrão e quais não serão. Utilize esse SVM no futuro para empresas com inadimplência baixa de baixa probabilidade e empresas de baixa inadimplência de baixa probabilidade, com o produto das vendas a descoberto. Há um quot dizendo quilo de centavos na frente de rolos de vapor. Você está fazendo o equivalente a vender uma venda fora do dinheiro. Neste caso, você ganhará pequenos lucros por anos, então ficará totalmente limpo quando o mercado derreter a cada 10 anos ou mais. Há também uma estratégia equivalente que compra dinheiro fora do dinheiro: eles perdem dinheiro há anos, e depois fazem uma matança quando o mercado derrete. Veja Talab39's The Black Swan. Ndash Contango 5 de junho às 22:20 Lembre-se de que as empresas internacionais gastaram centenas de bilhões de dólares e horas-homem nas mentes de inteligência artificial melhores e mais brilhantes nos últimos 40 anos. Eu já falei com algumas das torres mentais responsáveis pelos alphas em Citadel e Goldman Sachs, e a arrogância dos noviços para pensar que eles podem montar um algoritmo que irá toe to toe com eles, e vencer, é quase tão tolo quanto Uma criança dizendo que ele vai pular para a lua. Boa sorte, garoto, e cuidado com os marcianos espaciais. Para não dizer, novos campeões podem ser feitos, mas as chances são contra você. Ndash Eric Leschinski 13 de fevereiro 16 às 2:00 Uma possibilidade que vale a pena explorar é usar a ferramenta de aprendizado de ferramentas vetoriais de suporte na plataforma Metatrader 5. Em primeiro lugar, se você não estiver familiarizado com isso, o Metatrader 5 é uma plataforma desenvolvida para que os usuários implementem negociação algorítmica em mercados de Forex e CFD (não tenho certeza se a plataforma pode ser estendida a ações e outros mercados). Normalmente, ele é usado para estratégias baseadas em análise técnica (ou seja, usando indicadores baseados em dados históricos) e é usado por pessoas que buscam automatizar suas negociações. O Support Vector Machine Learning Tool foi desenvolvido por uma comunidade de usuários para permitir que máquinas de vetor de suporte sejam aplicadas a indicadores técnicos e aconselhar sobre negócios. Uma versão de demonstração gratuita da ferramenta pode ser baixada aqui se você quiser investigar mais. Como eu entendo, a ferramenta usa dados de preços históricos para avaliar se os negócios hipotéticos no passado teriam sido bem sucedidos. Em seguida, leva esses dados juntamente com os valores históricos de uma série de indicadores personalizáveis (MACD, osciladores, etc.) e usa isso para treinar uma máquina vetorial de suporte. Em seguida, ele usa a máquina de vetor de suporte treinado para sinalizar futuros negócios de buysell. Uma melhor descrição pode ser encontrada no link. Eu joguei um pouco com alguns resultados muito interessantes, mas, como em todas as estratégias de negociação algorítmicas, recomendo testes sólidos de backforward antes de levá-lo ao mercado ao vivo. Respondeu 10 de dezembro 12 às 11:59 Desculpe, mas apesar de ser usado como um exemplo popular na aprendizagem de máquinas, ninguém conseguiu uma previsão do mercado de ações. Não funciona por várias razões (verifique aleatoriamente a caminhada por Fama e um pouco de outros, falha de decisão racional, hipóteses erradas.), Mas o mais convincente é que se isso funcionasse, alguém poderia se tornar insanamente rico Em meses, basicamente, possui todo o mundo. Como isso não está acontecendo (e você pode ter certeza de que todo o banco tentou), temos boas provas de que isso simplesmente não funciona. Além disso: como você acha que vai conseguir o que dezenas de milhares de profissionais não conseguiram, usando os mesmos métodos que eles têm, além de recursos limitados e apenas as versões básicas de seus métodos respondidas 4 de junho 15 às 7:47 Apenas um lado em relação ao seu Razão mais compelível: as estratégias têm limites de capacidade, ou seja, níveis além do qual o impacto do mercado excederia o alfa disponível, mesmo supondo que você tivesse um capital ilimitado. Eu não tenho certeza do que você quer dizer com uma predição de mercado de quotes (ETF39s de futuros de índice), mas certamente há muitas pessoas fazendo previsões de curto prazo e se beneficiando delas todos os dias nos mercados. Ndash afekz 23 de novembro 15 às 13:19 Eu ecoo muito do que Shane escreveu. Além de ler ESL, gostaria de sugerir um estudo ainda mais fundamental das estatísticas. Além disso, os problemas que delineei em outra questão sobre esta troca são altamente relevantes. Em particular, o problema do viés de datamining é um bloqueio sério para qualquer estratégia baseada em aprendizagem mecânica. Esta publicação detalhará o que fiz para fazer aprox. 500k de negociação de alta freqüência de 2009 a 2010. Desde que negociei completamente de forma independente e já não estou executando meu programa Irsquom feliz em contar tudo. Minha negociação foi principalmente em contratos de futuros Russel 2000 e DAX. A chave para o meu sucesso, eu acredito, não estava em uma equação financeira sofisticada, mas sim no projeto de algoritmo geral que uniu muitos componentes simples e a aprendizagem de máquinas usadas para otimizar a máxima rentabilidade. Você wonrsquot precisa conhecer qualquer terminologia sofisticada aqui, porque quando eu configurei meu programa, tudo foi baseado na intuição. (Andrew Ngrsquos, um incrível curso de aprendizado de máquina ainda não estava disponível - por favor, se você clicar nesse link, você será levado ao meu projeto atual: CourseTalk, um site de revisão para MOOCs) Primeiro, eu só quero demonstrar que meu sucesso não foi simplesmente o resultado de sorte. Meu programa fez 1000-4000 negócios por dia (meio e meio, curto) e nunca entrou em posições de mais de alguns contratos por vez. Isso significava que a sorte aleatória de qualquer comércio específico era muito rápida. O resultado foi que nunca perdi mais de 2000 em um dia e nunca tive um mês perdido: (EDIT. Estes números são depois de pagar comissões) E herersquos um gráfico para dar uma sensação de variação diária. Observe que isso exclui os últimos 7 meses porque - à medida que os números pararam de subir - perdi minha motivação para inseri-los. Histórico de negociação Antes da criação do meu programa de negociação automatizado, a Irsquod teve 2 anos de experiência como comerciante do dia do ensino médio. Isso foi de volta em 2001 - foram os primeiros dias do comércio eletrônico e houve oportunidades para que ldquoscalpersrdquo ganhasse um bom dinheiro. Eu só posso descrever o que eu estava fazendo como parecido com jogar um jogo de vídeo com uma suposta vantagem. Ser bem-sucedido significou ser rápido, ser disciplinado e possuir boas habilidades de reconhecimento de padrões intuitivas. Eu consegui fazer cerca de 250k, pagar meus empréstimos estudantis e ter dinheiro restante. Win Durante os próximos cinco anos eu lançaria duas startups, pegando 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 escorrendo da venda da minha primeira inicialização, o comércio ofereceu esperanças de algum dinheiro rápido enquanto eu descobri minha próxima jogada. Em 2008, eu era o primeiro dia do dia comercializando futuros usando um software chamado T4. Irsquod estava desejando algumas teclas de atalho de entrada de pedidos personalizadas, então, depois de descobrir que a T4 tinha uma API, assumi o desafio de aprender C (a linguagem de programação necessária para usar a API) e segui adiante e construí-me algumas teclas rápidas. Depois de ficar com os pés molhados com a API, em breve tive aspirações maiores: eu queria ensinar o computador a trocar por mim. A API forneceu um fluxo de dados de mercado e uma maneira fácil de enviar ordens para a troca - tudo o que eu tinha que fazer era criar a lógica no meio. Abaixo está uma captura de tela de uma janela de negociação T4. O que foi legal é que, quando trabalhei, consegui assistir o comércio de computadores nesta mesma interface. Ver as ordens reais que aparecem dentro e fora (por conta própria com meu dinheiro real) foram emocionantes e assustadoras. O design do meu algoritmo Desde o início, meu objetivo era configurar um sistema, de modo que eu pudesse estar razoavelmente confiante com Irsquod ganhar dinheiro antes de fazer qualquer transação ao vivo. Para realizar isso, eu precisava construir uma estrutura de simulação de negociação que - com a maior precisão possível - simulasse negociações ao vivo. Embora a negociação no modo ao vivo exigisse o processamento de atualizações de mercado transmitidas através da API, o modo de simulação exigia a leitura de atualizações de mercado a partir de um arquivo de dados. Para coletar esses dados, configurei a primeira versão do meu programa para simplesmente conectar-se à API e registrar as atualizações do mercado com timestamps. Acabei usando 4 semanas de dados de mercado recentes para treinar e testar meu sistema. Com um quadro básico no local, eu ainda tinha a tarefa de descobrir como criar um sistema comercial lucrativo. Como se verificou, meu algoritmo seria dividido em dois componentes distintos, que a Irsquoll explorava por sua vez: Previsão de movimentos de preços e realização de negociações rentáveis Previsão de movimentos de preços Talvez um componente óbvio de qualquer sistema de negociação seja capaz de prever onde os preços se moverão. E o meu não foi uma exceção. Eu definei o preço atual como a média da oferta interna e da oferta interna e eu estabeleci o objetivo de prever onde o preço seria nos próximos 10 segundos. Meu algoritmo precisaria apresentar esta previsão momento a momento ao longo do dia de negociação. Criando indicadores de otimização de amplificador Eu criei um punhado de indicadores que provaram ter uma habilidade significativa para prever movimentos de preços de curto prazo. Cada indicador produziu um número que era positivo ou negativo. Um indicador era útil se, com maior frequência, um número positivo correspondesse com o mercado subindo e um número negativo correspondesse com o mercado diminuindo. O meu sistema permitiu que eu determinasse rapidamente a capacidade preditiva de qualquer indicador, então eu consegui experimentar muitos indicadores diferentes para ver o que funcionou. Muitos dos indicadores tinham variáveis nas fórmulas que os produziam e consegui encontrar os valores ótimos para essas variáveis, fazendo comparações lado a lado dos resultados obtidos com valores variáveis. Os indicadores que foram mais úteis foram todos relativamente simples e foram baseados em eventos recentes no mercado que negociei, bem como os mercados de títulos correlacionados. Fazendo previsões de movimento de preço exato Tendo indicadores que simplesmente previam um movimento de preço para cima ou para baixo não era suficiente. Eu precisava saber exatamente quanto o movimento de preços era previsto por cada valor possível de cada indicador. Eu precisava de uma fórmula que convertesse um valor indicador para uma previsão de preços. Para realizar isso, rastreei os movimentos de preços previstos em 50 baldes que dependiam do alcance em que o valor do indicador caiu. Isso produziu previsões únicas para cada balde que eu então consegui representar 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 manualmente manualmente, mas logo escrevi algum código para automatizar esse processo. Observe que nem todas as curvas indicadoras tiveram a mesma forma. Observe também que os baldes foram distribuídos de forma logarítmica de modo a espalhar os dados de forma uniforme. Finalmente, note que os valores de indicadores negativos (e as respectivas previsões de preços descendentes correspondentes) foram invertidos e combinados com os valores positivos. (O meu algoritmo tratou de cima e de 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 adicionar todas as previsões que cada indicador fazia 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 isso significava que, se eu estivesse convencido de múltiplos indicadores ao mesmo tempo, eu tinha que ter uma mudança cuidadosa, e isso afetaria as previsões de outro. Para ajustar todos os indicadores ao mesmo tempo eu configurei o otimizador para passar apenas 30 do caminho para as novas curvas de previsão com cada passagem. Com este salto de 30, descobri que as curvas de previsão se estabilizariam dentro de algumas passagens. Com cada indicador agora nos dando a previsão de preço adicional de Itrsquos eu poderia simplesmente adicioná-los para produzir uma única previsão de onde o mercado seria em 10 segundos. Por que prever os preços não é suficiente Você pode pensar que com essa vantagem no mercado eu estava dourado. Mas você precisa ter em mente que o mercado é composto por lances e ofertas - itrsquos não apenas um preço de mercado. O sucesso na negociação de alta freqüência se resume a obter bons preços e itrsquos não é tão fácil. Os seguintes fatores tornam difícil a criação de um sistema lucrativo: com cada comércio eu tive que pagar comissões tanto para o meu corretor quanto para a troca. O spread (diferença entre oferta mais alta e oferta mais baixa) significava que, se eu fosse simplesmente comprar e vender aleatoriamente, Irsquod perderia uma tonelada de dinheiro. A maior parte do volume do mercado eram outros bots que só executariam um comércio comigo se achassem que tinham alguma vantagem estatística. Ver uma oferta não garantiu que eu pudesse comprá-la. No momento em que meu pedido de compra chegou ao intercâmbio, era muito possível que essa oferta tivesse sido cancelada. Como um pequeno jogador do mercado, não havia nenhuma maneira de eu competir sozinho na velocidade. Construindo uma simulação de negociação completa Então eu tive uma estrutura que me permitiu backtest e otimizar indicadores. Mas eu tinha que ir além disso - eu precisava de uma estrutura que me permitisse backtest e otimizar um sistema de negociação completo onde eu estava enviando ordens e entrando em posições. Neste caso, a Irsquod deve ser otimizada para PampL total e, em certa medida, PampL médio por comércio. Isso seria mais complicado e, de certa forma, impossível modelar exatamente, mas fiz o melhor que pude. Aqui estão alguns dos problemas que tive de lidar com: quando um pedido foi enviado ao mercado em simulação, tive que modelar o tempo de atraso. O fato de meu sistema ter visto uma oferta não significava que pudesse comprá-lo imediatamente. O sistema enviaria o pedido, aguarde cerca de 20 milissegundos e, em seguida, apenas se a oferta ainda fosse considerada como um comércio executado. Isso foi inexato porque o tempo de atraso real era inconsistente e não relatado. Quando eu coloquei ofertas ou ofertas, tive de olhar para o fluxo de execução comercial (fornecido pela API) e usá-los para avaliar quando meu pedido teria sido executado. Para fazer isso, tive que rastrear a posição do meu pedido na fila. (Itrsquos um primeiro-em primeiro-out sistema.) Novamente, eu couldnrsquot fazer isso perfeitamente, mas eu fiz uma melhor aproximação. Para refinar minha simulação de execução de pedidos, o que fiz foi tirar meus arquivos de log da negociação ao vivo através da API e compará-los aos arquivos de log produzidos por negociação simulada do mesmo período de tempo. Consegui obter minha simulação até o ponto de ser bastante preciso e, para as partes que eram impossíveis de modelar exatamente, me assegurei pelo menos de produzir resultados estatisticamente similares (nas métricas que achava importantes). Fazendo negociações rentáveis Com um modelo de simulação de pedidos no local, agora posso enviar ordens no modo de simulação e ver um PampL simulado. Mas como meu sistema saberia quando e onde comprar e vender As previsões de movimento de preços eram 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 do lance interno (para um pedido 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 fosse superior a um certo limite que significaria que meu sistema deveria ter um bidoffer ativo - abaixo do limite, então qualquer ordem ativa deveria ser cancelada. Com base nisso, não era incomum que meu sistema apresentasse um lance no mercado e, em seguida, cancelasse-o imediatamente. (Embora eu tenha tentado minimizar isso, como itrsquos irritante, como diabos para quem olha a tela com olhos humanos - incluindo eu.) As pontuações do nível de preços foram calculadas com base nos seguintes fatores: A previsão de movimento de preço (que discutimos anteriormente). O nível de preços em questão. (Os níveis internos permitiram que fossem necessárias previsões de movimento de preço maiores). 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 ldquosaferdquo lugares para bidoffer. A previsão de movimento de preço por si só não era adequada, porque não contava o fato de que ao colocar uma oferta eu não estava preenchido automaticamente - eu só cheguei se alguém me vendesse lá. A realidade era que o simples fato de alguém me vender a um certo preço alterou as probabilidades estatísticas do comércio. As variáveis utilizadas nesta etapa estavam todas sujeitas a otimização. Isso foi feito exatamente da mesma maneira que otimizei variáveis nos indicadores de movimento de preços, exceto neste caso eu estava otimizando a linha inferior PampL. O que o meu programa ignorou Quando comercializamos como seres humanos, muitas vezes temos emoções e tendências poderosas que podem levar a decisões menos do que ótimas. Claramente, não queria codificar esses preconceitos. Aqui estão alguns fatores que meu sistema ignorou: o preço que uma posição foi inserida - Em um escritório de negociação, muito interessante ouvir a conversa sobre o preço em que alguém é longo ou curto, como se isso pudesse afetar sua futura tomada de decisões. Embora isso tenha alguma validade como parte de uma estratégia de redução de risco, ele realmente não tem influência no futuro dos eventos no mercado. Portanto, meu programa ignorou completamente essa informação. Itrsquos o mesmo conceito que ignorar custos irrecuperáveis. Ir curto contra sair de uma posição longa - Normalmente, um comerciante teria critérios diferentes que determinam onde vender uma posição longa em relação ao local onde é curto. No entanto, da minha perspectiva de algoritmos não havia motivo para fazer uma distinção. Se o meu algoritmo esperava que uma venda de movimento para baixo fosse uma boa idéia, independentemente de ser atualmente longa, curta ou plana. Uma estratégia de uddquo ldquodoubling - Esta é uma estratégia comum em que os comerciantes comprarão mais ações no caso de o comércio original ir contra elas. Isso resulta em um preço de compra médio menor e significa que quando (ou se) o estoque se virar, você será configurado para fazer seu dinheiro de volta em nenhum momento. Na minha opinião, esta é realmente uma estratégia horrível, a menos que você seja o Warren Buffet. Yoursquore enganou em pensar que você está indo bem porque a maioria de seus negócios serão vencedores. O problema é quando você perde você perder grande. O outro efeito é que dificilmente julgar se você realmente tem uma vantagem no mercado ou está apenas tendo sorte. Ser capaz de monitorar e confirmar que meu programa realmente teve uma vantagem foi um objetivo importante. Como meu algoritmo tomou decisões da mesma maneira, independentemente de onde ele entrou em um comércio ou se fosse atualmente longo ou curto, ocasionalmente sentava-se (e aceitou) alguns grandes negócios perdidos (além de alguns grandes negócios vencedores). Mas, você não deve pensar que não houve nenhum gerenciamento de risco. Para gerenciar o risco, apliquei um tamanho de posição máximo de 2 contratos por vez, ocasionalmente superado em dias de alto volume. Eu também tive um limite máximo de perda diária para proteger contra quaisquer condições de mercado inesperadas ou um erro no meu software. Esses limites foram aplicados no meu código, mas também no backend através do meu corretor. Como aconteceu, nunca encontrei problemas significativos. Correndo o algoritmo Desde o momento em que comecei a trabalhar no meu programa, demorei-me cerca de 6 meses antes de chegar ao ponto de rentabilidade e começar a executá-lo ao vivo. Apesar de ser justo, uma quantidade significativa de tempo foi aprender uma nova linguagem de programação. Enquanto trabalhava para melhorar o programa, vi maiores lucros para cada um dos próximos quatro meses. A cada semana eu reciclaria o meu sistema com base nas 4 semanas anteriores de dados. Eu achei que isso atingiu o equilíbrio certo entre a captura de tendências comportamentais do mercado recente e garantir que meu algoritmo tivesse dados suficientes para estabelecer padrões significativos. À medida que o treinamento começou a tomar mais e mais tempo, eu o separei para que ele possa ser executado por 8 máquinas virtuais usando o Amazon EC2. Os resultados foram então agrupados 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 gastar os próximos quatro meses tentando melhorar o meu programa, apesar da diminuição dos lucros a cada mês. Infelizmente, neste ponto, acho que a Irsquod implementou todas as minhas melhores idéias porque nada que tentei pareceu ajudar muito. Com a frustração de não conseguir fazer melhorias e não ter sentido de crescimento, comecei a pensar em uma nova direção. Eu enviei 6 empresas diferentes de comércio de alta freqüência para ver se theyrsquod estava interessado em comprar meu software e me contratar para trabalhar para eles. Ninguém respondeu. Eu tive algumas idéias de inicialização novas que eu queria trabalhar, então eu nunca segui. UPDATE - Eu postei isso no Hacker News e ele tem tido 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 alguma esperança de competir. Mesmo quando eu estava fazendo isso, eu acreditava que era muito raro que os indivíduos conseguissem o sucesso (embora eu tivesse ouvido falar de outros.) Há um comentário no topo da página que menciona estatísticas manipuladas e se refere a mim como um investidor de ldquoretail que quanta Escolheria lindamente o offrdquo. Este é um comentário bastante infeliz que não é simplesmente baseado na realidade. Estabelecendo isso de lado therersquos alguns comentários interessantes: news. ycombinatoritemid4748624 UPDATE 2 - Irsquove postou um FAQ de seguimento que responde algumas perguntas comuns que Irsquove recebeu dos comerciantes sobre esta publicação.
Comments
Post a Comment