Aprendizagem de máquina com algoTraderJo Entrou em Dez 2014 Status: Membro 383 Posts Olá companheiro comerciantes, Estou começando este segmento na esperança de compartilhar com você alguns dos meus desenvolvimentos no campo da aprendizagem de máquina. Embora eu não possa compartilhar com você sistemas exatos ou implementações de codificação (não espere obter alguma coisa para quotplug-and-playquot e ficar rico a partir deste segmento) vou compartilhar com você idéias, resultados da minha experiência e possivelmente outros aspectos do meu trabalho. Estou começando este tópico na esperança de que possamos compartilhar idéias e ajudar uns aos outros a melhorar nossas implementações. Vou começar com algumas estratégias de aprendizagem simples máquina e, em seguida, entrar em coisas mais complexas como o tempo passa. Espero que você aprecie o passeio Juntado Dec 2014 Status: Member 383 Posts Quero começar por dizer algumas coisas básicas. Lamento se a estrutura de meus postos deixa muito a desejar, eu não tenho nenhum fórum postagem experiência, mas espero obter alguns com o tempo. Na aprendizagem da máquina o que queremos fazer é simplesmente gerar uma previsão que é útil para o nosso comércio. Para fazer essa predição, geramos um modelo estatístico usando um conjunto de exemplos (saídas conhecidas e algumas entradas que as coisas têm poder preditivo para prever essas saídas), então fazemos uma previsão de uma saída desconhecida (nossos dados recentes) usando o modelo que criamos com Os exemplos. Para resumir é um processo quotsimplequot onde nós fazemos o seguinte: Selecione o que nós queremos predizer (este será nosso alvo) Selecionar algumas variáveis de entrada que nós pensamos pode prever nossos alvos Construir um jogo dos exemplos usando dados passados Com nossas entradas e nossas metas Crie um modelo usando esses exemplos. Um modelo é simplesmente um mecanismo matemático que relaciona as entradas / metas Fazer uma previsão do alvo usando os últimos inputs conhecidos Comércio usando esta informação Eu quero dizer desde o início que é muito importante evitar fazer o que muitos documentos acadêmicos sobre a aprendizagem de máquina Do, que é tentar construir um modelo com matrizes muito grandes de exemplos e, em seguida, tentar fazer uma previsão de longo prazo em um conjunto quotout-of-samplequot. Construir um modelo com 10 anos de dados e testá-lo nos dois últimos é não-senso, sujeito a muitos tipos de preconceitos estatísticos que discutiremos mais adiante. Em geral, você verá que os modelos de aprendizagem de máquina que eu construo são treinados em cada barra (ou cada vez que eu preciso tomar uma decisão) usando uma janela móvel de dados para a construção de exemplos (apenas exemplos recentes são considerados relevantes). Certamente, esta abordagem não é estranha a alguns tipos de preconceitos estatísticos, mas removemos o quotelefante na sala quando usamos a ampla abordagem de amostra da maioria dos trabalhos acadêmicos (o que, sem surpresa, muitas vezes leva a abordagens que não são Realmente útil para o comércio). Há principalmente três coisas a se preocupar com quando construir um modelo de aprendizagem de máquina: O que prever (o que o alvo) O que prever com (que insumos) Como relacionar o alvo e entradas (que modelo) A maioria do que vou estar mencionando Neste tópico irá focar em responder a estas perguntas, com exemplos reais. Se você quiser escrever quaisquer perguntas que você possa ter e vou tentar dar-lhe uma resposta ou simplesmente deixá-lo saber se vou responder isso mais tarde. Entrou em Dez 2014 Status: Member 383 Posts Vamos começar a trabalhar agora. Um verdadeiro exemplo prático usando a aprendizagem mecânica. Vamos supor que queremos construir um modelo muito simples usando um conjunto muito simples de entradas / alvos. Para esta experiência, estas são as respostas às perguntas: O que prever (o alvo) - gt A direção do próximo dia (otimista ou grosseiro) O que prever com (quais entradas) - gt A direção dos dois dias anteriores Como Para relacionar o alvo e as entradas (que modelo) - gt Um classificador linear de mapas Este modelo tentará prever a direcionalidade da próxima barra diária. Para construir nosso modelo, tomamos os últimos 200 exemplos (uma direção de dias como alvo e as direções anteriores de dois dias como entradas) e treinamos um classificador linear. Fazemos isso no início de cada bar diário. Se tivermos um exemplo em que dois dias de alta conduzem a um dia de baixa, os inputs seriam 1,1 eo alvo seria 0 (0bearish, 1bullish), usamos 200 destes exemplos para treinar o modelo em cada barra. Esperamos ser capazes de construir uma relação onde a direção de dois dias produz alguma probabilidade acima-aleatória para prever corretamente a direção dos dias. Usamos um stoploss igual a 50 dos 20 dias período médio True Range em cada comércio. Uma simulação desta técnica de 1988 a 2014 sobre o EUR / USD (dados antes de 1999 é DEM / USD) acima mostra que o modelo não tem geração de lucro estável. Na verdade, este modelo segue uma caminhada aleatória negativamente tendenciosa, o que faz com que ele perca dinheiro em função da propagação (3 pips no meu sim). Olhe para o desempenho aparentemente quotimpressive que nós temos em 1993-1995 e em 2003-2005, onde aparentemente nós poderíamos predizer com sucesso os próximos dias directionality usando um modelo linear simples e os resultados direcionais de dois dias passados. Este exemplo mostra várias coisas importantes. Por exemplo, que em curto prazo (que poderia ser um par de anos) você pode ser facilmente enganado por aleatoriedade --- você pode pensar que você tem algo que funciona que realmente não. Lembre-se de que o modelo é reconstruído em cada barra, usando os últimos 200 exemplos de entrada / destino. Que outras coisas você acha que pode aprender com este exemplo Post seus pensamentos Bem. Então você previu que os compradores ou vendedores iriam intervir Hmm, mas o que exatamente tem a ver com o preço subindo ou descendo 100 pips Preço pode reagir de várias maneiras - pode apenas tanque por algum tempo (enquanto todas as ordens de limite são preenchidos) E depois continuar avançando. Pode também retrace 5, 10, 50 ou mesmo 99 pips. Em todos esses casos você estava meio certo sobre compradores ou vendedores entrando, mas você deve entender que esta análise não tem muito a ver com o seu comércio indo de 90pip para 100pip. Sim, você está certo Esta é uma grande parte da razão pela qual estamos recebendo maus resultados ao usar o algoritmo de mapeamento linear. Porque a nossa rentabilidade está mal relacionada com a nossa previsão. Prever que os dias são bullish / bearish é de uso limitado se você não sabe quanto preço se moverá. Talvez suas previsões estejam corretas apenas nos dias que lhe dão 10 pips e você recebe todos os dias que têm 100 direcional pip totalmente errado. O que você consideraria um alvo melhor para um método de aprendizagem de máquina Sim, você está certo Esta é uma grande parte da razão pela qual estamos obtendo pobres resultados ao usar o algoritmo de mapeamento linear. Porque a nossa rentabilidade está mal relacionada com a nossa previsão. Prever que os dias são bullish / bearish é de uso limitado se você não sabe quanto preço se moverá. Talvez suas previsões estejam corretas apenas nos dias que lhe dão 10 pips e você recebe todos os dias que têm 100 direcional pip totalmente errado. O que você consideraria um melhor alvo para um método de aprendizagem de máquina Vamos dizer se você tem 100 pip TP e SL, eu gostaria de prever o que vem primeiro: TP ou SL Exemplo: TP veio primeiro 1 SL veio primeiro 0 (ou -1, No entanto você mapeá-lo) Eu não estou muito certo, se esta questão se encaixa aqui. Recentemente, comecei a ler e aprender sobre a aprendizagem mecânica. Alguém pode jogar alguma luz sobre como ir sobre ele ou melhor, qualquer pessoa pode compartilhar sua experiência e alguns ponteiros básicos sobre como ir sobre ele ou atleast começar a aplicá-lo para ver alguns resultados de conjuntos de dados Como ambicioso faz este som Também, Algoritmos padrão que devem ser experimentados ou observados ao fazer isso. Parece ser uma falácia básica que alguém pode vir junto e aprender alguns algoritmos de aprendizado de máquina ou AI, configurá-los como uma caixa preta, ir go, e sentar-se enquanto se aposentam. Meu conselho para você: Aprenda as estatísticas e o aprendizado da máquina primeiro, depois se preocupe sobre como aplicá-las a um determinado problema. Não há almoço grátis aqui. A análise de dados é um trabalho árduo. Leia Os Elementos de Aprendizagem Estatística (o pdf está disponível gratuitamente no site) e não comece a tentar construir um modelo até entender pelo menos os primeiros 8 capítulos. Depois de entender as estatísticas e aprendizagem de máquina, então você precisa aprender a backtest e construir um modelo de negociação, contabilidade para os custos de transação, etc, que é uma outra área. Depois de ter uma alça 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 baixo viés e variância na predição (isto é, que o treinamento e o erro de previsão de teste serão baixos e similares). Aqui está um exemplo de um sistema de comércio usando uma máquina de vetores de suporte em R. Mas basta ter em mente que você estará fazendo um enorme desserviço se você não gastar o tempo para entender o básico antes de tentar aplicar algo esotérico. Apenas para acrescentar uma atualização divertida: Recentemente me deparei com esta tese de mestrado: Uma nova estrutura de negociação algorítmica Aplicando a evolução e aprendizado de máquinas para otimização de portfólio (2012). É uma revisão extensiva de diferentes abordagens de aprendizado de máquina em comparação com buy-and-hold. Depois de quase 200 páginas, eles chegam à 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 ele não pode ser feito (eu havent gasto qualquer tempo revendo os seus métodos para ver a validade da abordagem), mas certamente fornece alguma evidência mais a favor do teorema do almoço não-livre. Como um dos autores da tese de mestre mencionado posso citar o meu próprio trabalho e dizer: "Se alguém realmente obtém resultados rentáveis não há incentivo para compartilhá-los, como iria negar a sua vantagem." Embora nossos resultados possam dar suporte à hipótese de mercado, ele não impede a existência de sistemas que funcionam. Pode ser como a teoria da probabilidade: "É especulado que as descobertas no campo da teoria das probabilidades aconteceram várias vezes, mas nunca foram compartilhadas. Isso pode ser devido à sua aplicação prática no jogo. Então, novamente, talvez isso é tudo alquimia moderna. Ndash Andr233 Christoffer Andersen Apr 30 13 at 10:01 Meu conselho para você: Existem várias máquinas de aprendizagem / Inteligência Artificial (ML / AI) ramos lá fora: www-formal. stanford. edu/jmc/whatisai/node2 Eu só tentei Programação genética e algumas redes neurais, e eu pessoalmente acho que o ramo de aprendizagem da experiência parece ter o maior potencial. GP / GA e redes neurais parecem ser as metodologias mais comumente exploradas com a finalidade de predições do mercado de ações, mas se você fizer alguma mineração de dados em Predict Wall Street. Você pode ser capaz de fazer algumas análises sentiment também. Gaste algum tempo aprendendo sobre as várias técnicas de ML / AI, encontre alguns dados de mercado e tente implementar alguns desses algoritmos. Cada um terá seus pontos fortes e fracos, mas você pode ser capaz de combinar as previsões de cada algoritmo em uma previsão composta (semelhante ao que os vencedores do Prêmio NetFlix fez). 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ê está certo de perder seu dinheiro se você tentar Fazendo. No entanto, as mesmas pessoas vão dizer que apenas sobre a única maneira de ganhar dinheiro no mercado de ações é construir e melhorar a sua própria estratégia de negociação e segui-lo de perto (que não é realmente uma má idéia). A idéia de algoritmos AI não é construir o chip e deixá-lo de comércio para você, mas para automatizar o processo de criação de estratégias. É um processo muito tedioso e não é fácil :). Minimizando Overfitting: Como ouvimos antes, um problema fundamental com algoritmos AI é overfitting (também conhecido como diagonalização bias): dado um conjunto de dados, o seu algoritmo AI pode encontrar um padrão que é particularmente relevante para o conjunto de treinamento. Mas pode não ser relevante no conjunto de teste. Existem várias maneiras de minimizar o overfitting: Use um conjunto de validação. Ele não dá feedback para o algoritmo, mas permite que você detecte quando seu algoritmo está potencialmente começando a overfit (ou seja, você pode parar de treinar se youre excesso demais). Use o aprendizado on-line 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. Aprendizagem Ensemble. Fornece-lhe uma maneira de ter vários algoritmos de aprendizagem da máquina e combinar suas previsões. A suposição é que vários algoritmos podem ter overfit 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 negociação 1. Primeiro os mencionados anteriormente: alguns métodos estatísticos focados em trabalhar em conjuntos de dados ao vivo. Isso significa que você sabe que está observando apenas uma amostra de dados e que deseja extrapolar. Você tem que lidar assim na amostra e fora das edições da amostra, overfitting e assim por diante. A partir desse ponto de vista, a mineração de dados está 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. Porque a aprendizagem estatística é sobre trabalhar em dados ao vivo, as matemáticas aplicadas que lidam com eles tiveram que se concentrar em um problema de duas escalas: left X ampamp Ftheta (Xn, xi) ampamp L (pi (Xn), n) end right. Onde X é o espaço de estado (multidimensional) a estudar (você tem em suas variáveis explicativas e as que prever), F contém a dinâmica de X que necessita de alguns parâmetros theta. A aleatoriedade de X vem da inovação xi, que é i. i.d. O objetivo da aprendizagem estatística é construir uma metodologia L ith como insumos uma observação parcial pi de X e ajustar progressivamente uma estimativa hattheta de theta, para que possamos saber tudo o que é necessário em X. Se você pensar em usar o aprendizado estatístico para encontrar Os parâmetros de uma regressão linear. Podemos modelar o espaço de estados como este: underbrace yx end right) left begin 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 gradiente na distância L2 entre y ea regressão: C (chapéu a, chapéu b) n soma (yk - (chapéu a, xk chapéu 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 gradiente que irá produzir 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 pares em (X, hattheta) convergem, e precisamos saber como construir esquemas de estimativa L que convergem para a teta original. Para dar-lhe ponteiros sobre tais resultados matemáticos: Agora podemos voltar para o segundo aspecto da aprendizagem estatística que é muito interessante para comerciantes / estrategistas quant: 2. Os resultados usados para provar a eficiência dos métodos de aprendizagem estatística pode ser usado para provar a Eficiência dos algoritmos de negociação. Para ver que é suficiente para ler novamente o sistema dinâmico acoplado que permite escrever o aprendizado estatístico: left M ampamp Frho (Mn, xi) ampamp L (pi (Mn), n) end right. Agora M são variáveis de mercado, rho é PnL subjacente, L é uma estratégia de negociação. Basta substituir minimizando um critério maximizando o PnL. Veja, por exemplo, a divisão óptima de ordens entre pools de liquidez: uma aproximação de algoritmo stochatic por: Gilles Pags, Sophie Laruelle, Charles-Albert Lehalle. Neste artigo, os autores mostram quem usar essa abordagem para dividir de forma ótima uma ordem entre diferentes pools escuros simultaneamente aprendendo a capacidade dos pools de fornecer liquidez e usar os resultados para negociar. As ferramentas de aprendizagem estatística podem ser usadas para construir estratégias de negociação iterativas (a maioria delas são iterativas) e provar sua eficiência. A resposta curta e brutal é: você não. Primeiro, porque ML e Estatísticas não é algo que você pode comandar bem em um ou dois anos. Meu horizonte de tempo recomendado para aprender nada não trivial é de 10 anos. ML não é 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 é 80 do trabalho. É por isso que você tem estatísticos com foco na análise de dados de Física, em genômica, em sabermetrics etc Para o registro, Jerome Friedman, co-autor da ESL citado acima, é um físico e ainda detém uma posição de cortesia em SLAC. Então, estude Estatísticas e Finanças por alguns anos. Seja paciente. Siga seu próprio caminho. A milhagem pode variar. Respondeu Feb 9 11 at 4:41 Eu concordo totalmente. Só porque você sabe a aprendizagem da máquina e as estatísticas, não implica que você sabe aplicá-lo ao financiamento. Além disso, uma coisa importante a lembrar é que você não estará negociando contra pessoas, você estará negociando contra outros algoritmos de inteligência artificial que estão assistindo a sua pilha de negócios e estão furiosamente calculando as chances de que o Coletivo yous seria assustado por um declínio fabricado e tendo essa pequena perda na criação de um pico / mergulho e enganar todos os AI39s em parar, e depois rodando o mergulho de volta para ele e montar a onda, ganhando suas perdas. O mercado de ações é um jogo de soma zero, tratá-lo como entrar em um jogo de boxe profissional, se você aren39t um veterano de 20 anos, you39re vai perder ndash Eric Leschinski 13 de fevereiro em 1:56 Um aplicativo básico está prevendo sofrimento financeiro. Obter um monte de dados com algumas empresas que têm inadimplentes, e outros que havent, com uma variedade de informações financeiras e relações. Use um método de aprendizado de máquina como SVM para ver se você pode prever quais empresas serão padrão e quais não. Use esse SVM no futuro para empresas de curto prazo de alta probabilidade e empresas de longo prazo de baixa probabilidade, com o produto das vendas a descoberto. Há um dito quotPicking tostões na frente de rollersquot de vapor. Você está fazendo o equivalente a vender um out-of-the-money put. Neste caso, você vai fazer pequenos lucros durante anos e, em seguida, ficar totalmente limpo quando o mercado derrete a cada 10 anos ou assim. Há também uma estratégia equivalente que compra out-of-the-money puts: eles perdem dinheiro durante anos, em seguida, fazer uma matança quando o mercado derrete. Veja o Cisne Negro de Talab39s. Ndash Contango Jun 5 11 at 22:20 Lembre-se de que as empresas internacionais gastaram centenas de bilhões de dólares e horas-homem nas melhores e mais brilhantes mentes de inteligência artificial nos últimos 40 anos. Falei com algumas das torres da mente responsáveis pelos alfas sobre Citadel e Goldman Sachs, ea arrogância dos noviços de pensar que eles podem montar um algoritmo que vai toe to toe com eles, e ganhar, é quase tão idiota como Uma criança dizendo que ele vai pular para a lua. Garoto de boa sorte, e cuidado com o espaço marcianos. Para não dizer que os novos campeões não podem ser feitos, mas as probabilidades estão contra você. Ndash Eric Leschinski Feb 13 at 2:00 Uma possibilidade que vale a pena explorar é usar a ferramenta de aprendizagem de máquina de vetor 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 nos mercados de forex e CFD (não sei se a plataforma pode ser estendida para ações e outros mercados). É tipicamente usado para estratégias de análise técnica baseada (ou seja, usando indicadores baseados em dados históricos) e é usado por pessoas que procuram automatizar sua negociação. O Support Vector Machine Learning Tool foi desenvolvido por uma comunidade de usuários para permitir que máquinas de vetores 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. Conforme 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 de vetores de suporte. Então usa a máquina treinada do vetor do apoio para sinalizar negociações futuras da compra / venda. Uma descrição melhor pode ser encontrada no link. Eu joguei com ele um pouco com alguns resultados muito interessantes, mas como com todas as estratégias de negociação algorítmica eu recomendo sólido back / forward antes de levá-lo para o mercado ao vivo. Respondeu Dec 10 12 at 11:59 Desculpe, mas apesar de ser usado como um exemplo popular na aprendizagem da máquina, ninguém nunca conseguiu uma previsão do mercado de ações. Não funciona por várias razões (verifique a caminhada aleatória por Fama e um monte de outros, falha racional de tomada de decisão, suposições erradas.), Mas o mais atraente é que, se funcionasse, alguém poderia tornar-se insanamente rico Dentro de meses, basicamente possuir todo o mundo. Como isso não está acontecendo (e você pode ter certeza que todo o banco tem tentado), temos boas provas, que 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 versões básicas de seus métodos respondidos Quotmost compellingquot razão: as estratégias têm limites de capacidade, ou seja, níveis além do qual seu impacto no mercado excederia o alfa disponível, mesmo assumindo que você tinha capital ilimitado. Não tenho certeza do que você quer dizer com uma previsão de mercado de quot; (futuros de índice ETF39s), mas certamente há uma abundância de pessoas fazendo previsões de curto prazo, e beneficiando delas, todos os dias em mercados. Ndash afekz Nov 23 15 at 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 em primeiro lugar. Além disso, os problemas que eu esbocei em outra questão sobre esta troca são altamente relevantes. Em particular, o problema do viés de datamining é um sério obstáculo a qualquer estratégia baseada em aprendizagem de máquina. Avaliação de classificação de aprendizagem de máquina para negociação financeira: Uma abordagem empírica Uma simulação de negociação de seis anos em USDJPY, EURGPB e EURUSD são avaliadas. A reciclagem periódica, o número de atributos eo tamanho do conjunto de reciclagem são variados e estudados. As precisões médias de alcance são obtidas com retornos financeiros elevados a longo prazo. Resumo Análise técnica e quantitativa em ferramentas financeiras de uso comercial matemática e estatística para ajudar os investidores a decidir sobre o momento ideal para iniciar e fechar ordens. Embora essas abordagens tradicionais tenham servido sua finalidade em certa medida, novas técnicas decorrentes do campo da inteligência computacional, como a aprendizagem de máquinas e mineração de dados têm surgido para analisar a informação financeira. Embora a principal pesquisa em engenharia financeira tenha se concentrado em modelos computacionais complexos, tais como Redes Neurais e Máquinas de Suporte Vectorial, existem modelos mais simples que demonstraram sua utilidade em aplicações que não sejam de negociação financeira, e vale a pena considerar para determinar suas vantagens e limitações inerentes quando Utilizados como ferramentas de análise de negociação. Este artigo analisa o papel dos modelos simples de aprendizado de máquinas para conseguir negociações rentáveis através de uma série de simulações de negociação no mercado FOREX. Ele avalia o desempenho dos modelos e como determinadas configurações dos modelos produzem previsões sistemáticas e consistentes para negociação rentável. Devido às complexidades inerentes às séries temporais financeiras, discute-se o papel da seleção de atributos, da reciclagem periódica e do tamanho do conjunto de treinamento, a fim de obter uma combinação desses parâmetros não só capaz de gerar retornos cumulativos positivos para cada um dos modelos de aprendizagem mecânica, Para demonstrar como simples algoritmos tradicionalmente impedidos de previsão financeira para aplicações comerciais apresenta desempenhos semelhantes aos seus homólogos mais complexos. O artigo discute como uma combinação de atributos, além de indicadores técnicos que têm sido usados como insumos dos preditores de aprendizado máquina, tais como recursos relacionados a preço, características de sazonalidade e valores defasados usados na análise clássica de séries temporais, são usados para melhorar as capacidades de classificação Que afeta diretamente a rentabilidade final. Palavras-chave Trading Previsão financeira Inteligência computacional Mineração de dados Aprendizagem de máquinas MERCADOS FOREX Autor de correspondência em: Departamento de Eletrônica, Pontifícia Universidade Javeriana, Bogotá, Colômbia. Tel. 5713208320 ext 5549.Machine Aprendizagem com algoTraderJo wow. Subscreveu onde você obtém a tecnologia para realizar esses testes e módulos que eu usei para codificar minhas estratégias de aprendizagem de máquina usando R exclusivamente, mas então as coisas eram uma dor para correr ao vivo devido a problemas com a vinculação de R para viver plataformas de execução e APIs. Agora eu uso a estrutura de programação fornecida por Asirikuy que permite que você codifique estratégias de aprendizado de máquina usando Shark / Waffles em C ou use R se você quiser também. Você pode então executar suas estratégias em várias plataformas (eu pessoalmente executá-las usando seu programa de comerciante que se conecta diretamente ao Oanda., Mas os sistemas também podem ser negociados no Metatrader uma vez codificado em sua estrutura sem qualquer necessidade de recodificar). Eu achei que esta era uma implementação muito boa, rápido para obter meus protótipos do sistema e idéias para aprendizagem de máquina codificado. Eu produzo simulações usando seu software também e os analiso usando R (as imagens eu afixei antes). Eu encontrei este quadro de programação originalmente através do blog guys, especialmente através deste post. No entanto, se você quiser, você pode codificar os mesmos sistemas de aprendizagem de máquina usando R, mas fica muito complicado quando você deseja executar testes precisos em diferentes conjuntos de dados de forex com diferentes fusos horários ou quando você deseja alterar suas estratégias de execução ao vivo. Alternativamente, você também pode codificar algo do zero que interfaces FANN / Shark / Waffles com MT4 ou uma API, eu pessoalmente achei melhor pagar por uma comunidade suportada solução ao invés de ir para mim mesmo a partir de zero, mas é claro que uma pessoa que é mais jovem Que eu ou tem um monte de tempo adicional pode optar por ir para uma solução completamente de-scratch-in-house. OP se juntou ao Fórum como 30mins atrás, ele soa muito como EurUsd hmmmnnn: thinkin g: Desculpe dizer que não sou EurUsd. Eu tenho lido ForexFactory por um tempo, mas finalmente encontrei o tempo / energia para participar e começar a postar, especialmente desde agora eu tenho algum tempo livre e gostaria de trocar idéias com comerciantes like minded. Eu encontrei muito pouco online sobre aprendizagem de máquina, especialmente sobre aplicações de comércio verdadeiras práticas e, portanto, eu queria ver se alguém está trabalhando em algo ao longo destas linhas (e tentar passar o pouco que eu sei para aqueles que possam acontecer de estar interessado) . Você poderia pensar que, no entanto, depende muito de como suas respostas certas / erradas são distribuídas. Conhecer a direcionalidade líquida de velas que têm pouco movimento é de pouco uso, enquanto estar errado em velas que têm grandes valores é um problema ruim. Esta é realmente a razão pela qual você verá que dois modelos podem ter precisão muito semelhante na previsão dos próximos dias direcionalidade, mas um modelo pode ser muito mais bem sucedido do que o outro. Esta é uma razão pela qual o K-NN e modelos de mapeamento linear mostrou antes têm resultados tão diferentes. Sua precisão. Se o modelo pode prever a vela diária pode igualmente com o mesmo conceito prever a vela semanal que eu penso será vela maior e pela maneira a mensal eu não sou um programador e eu não gosto. Mas só eu tento pegar minha opinião Obrigado por iniciar este tópico Estou particularmente interessado em técnicas ML, mas minhas habilidades de codificação não estão lá para implementar por mim. Você já fez algum trabalho com redes bayesianas? A maioria do que eu já li na net (não há muito, infelizmente) as pessoas têm vindo a utilizar desenhos de rede ML inadequado para esta aplicação. IMHO, característica mais importante da rede ML bem sucedida é o design, seguido de perto em segundo lugar pela preparação / apresentação dos dados brutos. O que é tudo sobre o seu todo sobre o dinheiro. Oi Jo, Obrigado por iniciar este tópico Estou particularmente interessado em técnicas ML, mas minhas habilidades de codificação não estão lá para implementar por mim. Você já fez algum trabalho com redes bayesianas? A maioria do que eu já li na net (não há muito, infelizmente) as pessoas têm vindo a utilizar desenhos de rede ML inadequado para esta aplicação. IMHO, característica mais importante da rede ML bem sucedida é o design, seguido de perto em segundo lugar pela preparação / apresentação dos dados brutos. Sim, eu tentei algumas coisas com redes bayesianas, mas muitas vezes eu encontrar modelos mais simples para trabalhar melhor (muitas vezes depende do que você quer prever também). Na minha experiência prática ML bem-sucedido pode depender fortemente de seus parâmetros de modelo / estrutura se o seu modelo é sensível a isso (acho SMV, redes neurais, etc), mas o seu modelo pode ser robusto para isso se é muito mais simples (como o K-NN Exemplo eu tenho dado). O aspecto mais crítico que eu vi são os inputs / targets escolhidos. Escolher suas técnicas de preparação de entrada também pode ser importante, mas isso pode ser muito menos importante se você está usando a classificação em vez de regressão. Como os classificadores geralmente recebem entradas baseadas em categorias, muitas vezes é mais fácil começar no ML usando classificadores e, em seguida, evoluir para técnicas baseadas em regressão. Diferentes modelos são todos mundos diferentes, dependendo do modelo que você escolher para estudar um determinado problema de previsão você vai enfrentar diferentes questões (na minha experiência). Escolher modelos é uma grande parte de fazer ML com sucesso também (você já pode ver que no mapa linear Vs K-NN exemplo que eu dei). Registrado em Dez 2014 Status: Member 383 Posts Agora podemos pegar o nosso modelo K-NN e tentar adicionar mais informações para ver se ele melhora os resultados. Entradas podem ser tão variadas como você quer eo efeito das entradas pode ser determinada através da comparação de seus sistemas de comércio global resultados. Quando você adiciona entradas que são irrelevantes, elas tornam a previsão de valores mais difícil, pois apenas adicionam ruído ou redundância às suas previsões. A imagem a seguir mostra uma comparação do sistema original que usa a direção das últimas 2 velas como entradas e uma modificação do sistema que usa a direção das últimas 2 velas mais se o RSI (10) estava acima de 50 (1) ou abaixo 50 (0) para essas duas velas. Adicionando essas duas entradas RSI para o nosso modelo ML torna as coisas piores, portanto, eles não são úteis. As pessoas na literatura acadêmica tendem a medir o valor preditor observando a eficácia da predição (neste caso, se podemos prever uma barra de baixa ou alta), mas neste caso isso faz pouco sentido porque nosso lucro está principalmente associado com the distribution of our prediction rather than their accuracy. Therefore we are more interested in when we are right than how often we are right. As many on this thread have pointed we can create models that target the prediction of variables that are more related with our actual profit goals (trade exits) which we will move into after we continue our exploration of daily candle direction predictions (which I like as a beginning and simple exercise). When you add new information that contributes with predictive power you actually get better results. The graph below shows you our K-NN test using 2 bar directions as input and a second test using 18 bars as inputs. As you can see the addition of 16 new inputs adds enough information to improve results altogether. Attached Image (click to enlarge) It is also interesting to see how the distribution of accuracy in predictions has changed significantly and our two systems take opposite directions through several parts of the simulation. This means that we may be able to obtain an improvement in overall results if we combine different sets of machine learning strategies where the distribution of accuracy is different. Since both systems are expected to have edges in prediction but both are accurate at different times a portfolio trading both systems might yield even better results. Indeed, splitting risk in half and doing a portfolio simulation gives the following result: Attached Image (click to enlarge) The portfolio indeed has a behavior that is now between both systems, performance is smoother than for the two separate strategies as the variance between both of them is compensated. Oh yes, you can attempt to train to predict trade exit targets. Which is something very interesting as well (this is somewhat how some of the strategies I trade live actually work). I will continue exploring the case of daily bar predictions to get a little more into the world of machine learning and then well move into things along these lines I look forward to your exit target predictions.. I use genetic programming. decision trees(random forest etc.) svm and self training NN. My project is still in development phase. But out of sample results with GP is very encouraging. It took me couple of years with GP to find very good results( gt 85 winnig rate with low drawdown).So inputs are very important. Dont expect to get very good results just using RSI, MACD etc. as inputs. There are some very good free open source libraries :scikit in python: scikit-learn. org/stable/ lib c. dlib/ml you will find some very fast SVM algos in c. Regarding KNN, I read that they suffer from curse of dimensionality in high-dimensional data. A Russian prof. suggest Cosine Similarity method for finding the nearest neighbors to avoid curse of dimensionality. There are lot of hype surrending the Deep learning nets. I read that they are slow to train and have only little effect on financial time series. My experience is (only halfway through ) ensemble methods are the best methods for financial time series. I look forward to your exit target predictions. I use genetic programming. decision trees(random forest etc.) svm and self training NN. My project is still in development phase. But out of sample results with GP is very encouraging. It took me couple of years with GP to find very good results( gt 85 winnig rate with low drawdown).So inputs are very important. Dont expect to get very good results just using RSI, MACD etc. as inputs. There are some very good free open source libraries :scikit in python: scikit-learn. org/stable/. Regarding the open source libraries you suggest, my main problem with using them - mainly the python ones - is that going to live trading and doing simulations is not so straightforward. I do not have the time to program/debug my own simulator and live trading software so I preferred to get the stuff at Asirikuy, which already have those problems solved. I did add the C libraries you suggested to the programming framework, which in fact are some of the libraries I use for SVM. However these are all great tools, especially all the available python ones, so for people building all their stuff from scratch this is certainly something very useful. Youre right about the K-NN and the course of dimensionality it suffers from, however it is a quite well performing technique provided that the complexity of the machine learning problem youre solving is limited (as in the examples shown here). nice thread. this is right in my neck of woods. hope you dont share too much :-) j/k what do you think of using deep learning for financial predictions. as you have probably seen, DL has emerged as a winner for most learning problems and has out performed pretty much every other method. researchers are already claiming that DL will outdate everything else. look forward to having a thoughtful discussion. Deep learning turns out to be too expensive computationally for me. Measuring data-mining bias often involves running extensive computational trials using random data obtained through bootstrapping with replacement of the original data in order to measure the probability that the data-mining algorithms will generate the results out of random chance within a data set that has no past-to-future correlations. Doing this means that every part of the process needs to be repeated across the random data sets, for deep learning methods this is too expensive to do computationally (unfeasible for me at least). Deep learning methods also make harder use of the data, so they are bound to have deeper data-mining bias issues. yes i have seen that paper. the results claimed in that are really impressive if achievable. as for deep learning, a significantly more interest was generated when deepmind demoed general intelligence last year. see article on this robohub. org/artificial-genera. eepmind-do-it/ it is no doubt, machine learning is at the cusp of changing all sort of industries. I think deep networks will be widely used in all sort of places. the problem acadameics are dealing with (computer vision, spatial awareness) are so much more complex then finding patterns in financial data. of course if enough trading is happening using ML already then it will be tough to find reliable patterns (but my bet is this is not the case). The cost to build hardware to train deep networks has come down quite a lot. in fact in about 1000 you cna get hardware with nvidia gpu and do quite a lot. I am experimenting with this in hft space so we have a lot more that certainly help control data mining. the paper olsen linked didnt really use a lot of data so i think that all is doable in under 1000 machine. Think. Comércio. Live Joined Sep 2012 Status: Member 728 Posts Invisible OP this is a very nice and intelectual thread, i need to read it again, im a lazy reader and hate reading technical stuff that i have no full understanding of but thats about to change. my questions are: 1.how long have you been trading this way and how long have you been succesful, if you have been succesful. 2. I was talking to my friend the other day, he told me he is testing a strategy that is doing fantasticaly well this year, past 12 months it has made alot of money, but when they created an EA to backtest it further back it actualy was a loosing strategy, so how will you acount for that I am what Many Dream to be but only a few can achieve, im a part of the 1 Joined Dec 2014 Status: Member 383 Posts If we continue to explore our K-NN algorithm and attempt to find the optimum amount of information for this model we find that using 4 bars as input gives the best overall result (remember that we are always rebuilding the model on each bar using recent past examples). The strategy has a very linear log(balance) Vs time curve which talks about the stability of the algorithm in successfully predicting larger days Vs smaller days. Attached Image (click to enlarge) It is however immediately noticeable that the strategy faced a kind of regime change in 2011, when the strategy changed from having a drawdown below 20 for more than 20 years to go to a 35 drawdown before starting to recover. Although the strategy seems close to making a new equity high in 2014, it seems obvious that such a long drawdown period would make trading unattractive. It is therefore important for us to improve this strategy further in order to ensure that the 2011-2014 period does not become flat/losing but rather shows the same profit as the balance curve before. How can we achieve this The K-NN model definitely cannot classify this region accurately without a serious deterioration of previous results (which makes us doubt the results due to the probability that good results in 2011-2014 are just due to chance). We therefore have a few choices (I am assuming we wont be changing the prediction target for now): Explore other inputs (see if we can get more information that allows for a better prediction from other sources) Explore other models (see if other models have a distribution of accurate results that compensates that of the K-NN) We can use other type of classifiers to compliment the K-NN (besides the linear mapper we tested at first). We can attempt to use a Support Vector Machine (SVM) to compliment the trading of our K-NN. An SVM model built with a C10 and gamma0.01 gives the result showed below in black. You can see clearly that although the SVM does suffer from the same problem near the end of the test, this model does reach an equity high at a much later date than the K-NN strategy. Attached Image (click to enlarge) Using this we can create a portfolio that uses 90 of our K-NN strategy and 10 of our SVM strategy (the optimum weights that minimize variance) and we can then generate a portfolio that reaches a drawdown just slightly above 20 in 2014 but does reach a new equity high later on during the year. We now have a model that gives decent stable performance through 25 years of different market conditions and does not crash during the past two years, although it was difficult for the models to predict daily bar directionality for large bars accurately during this period. I think we can do even better What do you think Attached Image (click to enlarge) OP this is a very nice and intelectual thread, i need to read it again, im a lazy reader and hate reading technical stuff that i have no full understanding of but thats about to change. my questions are: 1.how long have you been trading this way and how long have you been succesful, if you have been succesful. 2. I was talking to my friend the other day, he told me he is testing a strategy that is doing fantasticaly well this year, past 12 months it has made alot of money, but when they created an EA to backtest it further back it actualy was a. I have been trading like this for at least 4 years (using machine learning based systems that is). Although I have only been trading using the framework from the people at Asirikuy for the past year and a half. I am currently doing prop trading for a firm. There is nothing that prevents you from being lucky. The probability that random entries give you huge profits across a year of trading is not zero. The chance that you do well exists and if thousands of traders do this some succeed. Market conditions also tend to cluster, so if you make a bet about a certain market behavior and you are right, then you are bound to make even more money. However I am not interested in guessing or in being lucky. I like to have systems that are statistically sound which can withstand any set of given historical market conditions. I am not going to enter a discussion about who is quotright or wrongquot I just dont trade this way but certainly others can trade in whatever way they see fit. This post will detail what I did to make approx. 500k from high frequency trading from 2009 to 2010. Since I was trading completely independently and am no longer running my program Irsquom happy to tell all. My trading was mostly in Russel 2000 and DAX futures contracts. The key to my success, I believe, was not in a sophisticated financial equation but rather in the overall algorithm design which tied together many simple components and used machine learning to optimize for maximum profitability. You wonrsquot need to know any sophisticated terminology here because when I setup my program it was all based on intuition. (Andrew Ngrsquos amazing machine learning course was not yet available - btw if you click that link yoursquoll be taken to my current project: CourseTalk, a review site for MOOCs) First, I just want to demonstrate that my success was not simply the result of luck. My program made 1000-4000 trades per day (half long, half short) and never got into positions of more than a few contracts at a time. This meant the random luck from any one particular trade averaged out pretty fast. The result was I never lost more than 2000 in one day and never had a losing month: ( EDIT . These figures are after paying commissions) And herersquos a chart to give you a sense of the daily variation. Note this excludes the last 7 months because - as the figures stopped going up - I lost my motivation to enter them. My trading background Prior to setting up my automated trading program Irsquod had 2 years experience as a ldquomanualrdquo day trader. This was back in 2001 - it was the early days of electronic trading and there were opportunities for ldquoscalpersrdquo to make good money. I can only describe what I was doing as akin to playing a video game / gambling with a supposed edge. Being successful meant being fast, being disciplined, and having a good intuitive pattern recognition abilities. I was able to make around 250k, pay off my student loans and have money left over. Win Over the next five years I would launch two startups, picking up some programming skills along the way. It wouldnrsquot be until late 2008 that I would get back into trading. With money running low from the sale of my first startup, trading offered hopes of some quick cash while I figured out my next move. In 2008 I was ldquomanuallyrdquo day trading futures using software called T4. Irsquod been wanting some customized order entry hotkeys, so after discovering T4 had an API, I took on the challenge of learning C (the programming language required to use the API) and went ahead and built myself some hotkeys. After getting my feet wet with the API I soon had bigger aspirations: I wanted to teach the computer to trade for me. The API provided both a stream of market data and an easy way to send orders to the exchange - all I had to do was create the logic in the middle. Below is a screenshot of a T4 trading window. What was cool is that when I got my program working I was able to watch the computer trade on this exact same interface. Watching real orders popping in and out (by themselves with my real money) was both thrilling and scary. The design of my algorithm From the outset my goal was to setup a system such that I could be reasonably confident Irsquod make money before ever making any live trades. To accomplish this I needed to build a trading simulation framework that would - as accurately as possible - simulate live trading. While trading in live mode required processing market updates streamed through the API, simulation mode required reading market updates from a data file. To collect this data I setup the first version of my program to simply connect to the API and record market updates with timestamps. I ended up using 4 weeks worth of recent market data to train and test my system on. With a basic framework in place I still had the task of figuring out how to make a profitable trading system. As it turns out my algorithm would break down into two distinct components, which Irsquoll explore in turn: Predicting price movements and Making profitable trades Predicting price movements Perhaps an obvious component of any trading system is being able to predict where prices will move. And mine was no exception. I defined the current price as the average of the inside bid and inside offer and I set the goal of predicting where the price would be in the next 10 seconds. My algorithm would need to come up with this prediction moment-by-moment throughout the trading day. Creating amp optimizing indicators I created a handful of indicators that proved to have a meaningful ability to predict short term price movements. Each indicator produced a number that was either positive or negative. An indicator was useful if more often than not a positive number corresponded with the market going up and a negative number corresponded with the market going down. My system allowed me to quickly determine how much predictive ability any indicator had so I was able to experiment with a lot of different indicators to see what worked. Many of the indicators had variables in the formulas that produced them and I was able to find the optimal values for those variables by doing side by side comparisons of results achieved with varying values. The indicators that were most useful were all relatively simple and were based on recent events in the market I was trading as well as the markets of correlated securities. Making exact price move predictions Having indicators that simply predicted an up or down price movement wasnrsquot enough. I needed to know exactly how much price movement was predicted by each possible value of each indicator. I needed a formula that would convert an indicator value to a price prediction. To accomplish this I tracked predicted price moves in 50 buckets that depended on the range that the indicator value fell in. This produced unique predictions for each bucket that I was then able to graph in Excel. As you can see the expected price change increases as the indicator value increases. Based on a graph such as this I was able to make a formula to fit the curve. In the beginning I did this ldquocurve fittingrdquo manually but I soon wrote up some code to automate this process. Note that not all the indicator curves had the same shape. Also note the buckets were logarithmically distributed so as to spread the data points out evenly. Finally note that negative indicator values (and their corresponding downward price predictions) were flipped and combined with the positive values. (My algorithm treated up and down exactly the same.) Combining indicators for a single prediction An important thing to consider was that each indicator was not entirely independent. I couldnrsquot simply just add up all the predictions that each indicator made individually. The key was to figure out the additional predictive value that each indicator had beyond what was already predicted. This wasnrsquot to hard to implement but it did mean that if I was ldquocurve fittingrdquo multiple indicators at the same time I had to be careful changing one would effect the predictions of another. In order to ldquocurve fitrdquo all of the indicators at the same time I setup the optimizer to step only 30 of the way towards the new prediction curves with each pass. With this 30 jump I found that the prediction curves would stabilize within a few passes. With each indicator now giving us itrsquos additional price prediction I could simply add them up to produce a single prediction of where the market would be in 10 seconds. Why predicting prices is not enough You might think that with this edge on the market I was golden. But you need to keep in mind that the market is made up of bids and offers - itrsquos not just one market price. Success in high frequency trading comes down to getting good prices and itrsquos not that easy. The following factors make creating a profitable system difficult: With each trade I had to pay commissions to both my broker and the exchange. The spread (difference between highest bid and lowest offer) meant that if I were to simply buy and sell randomly Irsquod be losing a ton of money. Most of the market volume was other bots that would only execute a trade with me if they thought they had some statistical edge. Seeing an offer did not guarantee that I could buy it. By the time my buy order got to the exchange it was very possible that that offer would have been cancelled. As a small market player there was no way I could compete on speed alone. Building a full trading simulation So I had a framework that allowed me to backtest and optimize indicators. But I had to go beyond this - I needed a framework that would allow me to backtest and optimize a full trading system one where I was sending orders and getting in positions. In this case Irsquod be optimizing for total PampL and to some extent average PampL per trade. This would be trickier and in some ways impossible to model exactly but I did as best as I could. Here are some of the issues I had to deal with: When an order was sent to the market in simulation I had to model the lag time. The fact that my system saw an offer did not mean that it could buy it straight away. The system would send the order, wait approximately 20 milliseconds and then only if the offer was still there was it considered as an executed trade. This was inexact because the real lag time was inconsistent and unreported. When I placed bids or offers I had to look at the trade execution stream (provided by the API) and use those to gauge when my order would have gotten executed against. To do this right I had to track the position of my order in the queue. (Itrsquos a first-in first-out system.) Again, I couldnrsquot do this perfectly but I made a best approximation. To refine my order execution simulation what I did was take my log files from live trading through the API and compare them to log files produced by simulated trading from the exact same time period. I was able to get my simulation to the point that it was pretty accurate and for the parts that were impossible to model exactly I made sure to at least produce outcomes that were statistically similar (in the metrics I thought were important). Making profitable trades With an order simulation model in place I could now send orders in simulation mode and see a simulated PampL. But how would my system know when and where to buy and sell The price move predictions were a starting point but not the whole story. What I did was create a scoring system for each of 5 price levels on the bid and offer. These included one level above the inside bid (for a buy order) and one level below the inside offer (for a sell order). If the score at any given price level was above a certain threshold that would mean my system should have an active bid/offer there - below the threshold then any active orders should be cancelled. Based on this it was not uncommon that my system would flash a bid in the market then immediately cancel it. (Although I tried to minimize this as itrsquos annoying as heck to anyone looking at the screen with human eyes - including me.) The price level scores were calculated based on the following factors: The price move prediction (that we discussed earlier). The price level in question. (Inner levels meant greater price move predictions were required.) The number of contracts in front of my order in the queue. (Less was better.) The number of contracts behind my order in the queue. (More was better.) Essentially these factors served to identify ldquosaferdquo places to bid/offer. The price move prediction alone was not adequate because it did not account for the fact that when placing a bid I was not automatically filled - I only got filled if someone sold to me there. The reality was that the mere fact of someone selling to me at a certain price changed the statistical odds of the trade. The variables used in this step were all subject to optimization. This was done in the exact same way as I optimized variables in the price move indicators except in this case I was optimizing for bottom line PampL. What my program ignored When trading as humans we often have powerful emotions and biases that can lead to less than optimal decisions. Clearly I did not want to codify these biases. Here are some factors my system ignored: The price that a position was entered - In a trading office itrsquos pretty common to hear conversation about the price at which someone is long or short as if that should effect their future decision making. While this has some validity as part of a risk reduction strategy it really has no bearing on the future course of events in the market. Therefore my program completely ignored this information. Itrsquos the same concept as ignoring sunk costs. Going short vs. exiting a long position - Typically a trader would have different criteria that determines where to sell a long position versus where to go short. However from my algorithms perspective there was no reason to make a distinction. If my algorithm expected a downward move selling was a good idea regardless of if it was currently long, short, or flat. A ldquodoubling uprdquo strategy - This is a common strategy where traders will buy more stock in the event that there original trade goes against them. This results in your average purchase price being lower and it means when (or if) the stock turns around yoursquoll be set to make your money back in no time. In my opinion this is really a horrible strategy unless yoursquore Warren Buffet. Yoursquore tricked into thinking you are doing well because most of your trades will be winners. The problem is when you lose you lose big. The other effect is it makes it hard to judge if you actually have an edge on the market or are just getting lucky. Being able to monitor and confirm that my program did in fact have an edge was an important goal. Since my algorithm made decisions the same way regardless of where it entered a trade or if it was currently long or short it did occasionally sit in (and take) some large losing trades (in addition to some large winning trades). But, you shouldnrsquot think there wasnrsquot any risk management. To manage risk I enforced a maximum position size of 2 contracts at a time, occasionally bumped up on high volume days. I also had a maximum daily loss limit to safeguard against any unexpected market conditions or a bug in my software. These limits were enforced in my code but also in the backend through my broker. As it happened I never encountered any significant problems. Running the algorithm From the moment I started working on my program it took me about 6 months before i got it to the point of profitability and begun running it live. Although to be fair a significant amount of time was learning a new programming language. As I worked to improve the program I saw increased profits for each of the next four months. Each week I would retrain my system based on the previous 4 weeks worth of data. I found this struck the right balance between capturing recent market behavioral trends and insuring my algorithm had enough data to establish meaningful patterns. As the training began taking more and more time I split it out so that it could be performed by 8 virtual machines using amazon EC2. The results were then coalesced on my local machine. The high point of my trading was October 2009 when I made almost 100k. After this I continued to spend the next four months trying to improve my program despite decreased profit each month. Unfortunately by this point I guess Irsquod implemented all my best ideas because nothing I tried seemed to help much. With the frustration of not being able to make improvements and not having a sense of growth I began thinking about a new direction. I emailed 6 different high frequency trading firms to see if theyrsquod be interested in purchasing my software and hiring me to work for them. Nobody replied. I had some new startup ideas I wanted to work on so I never followed up. UPDATE - I posted this on Hacker News and it has gotten a lot of attention. I just want to say that I do not advocate anyone trying to do something like this themselves now. You would need a team of really smart people with a range of experiences to have any hope of competing. Even when I was doing this I believe it was very rare for individuals to achieve success (though I had heard of others.) There is a comment at the top of the page that mentions manipulated statistics and refers to me as a ldquoretail investorrdquo that quants would ldquogleefully pick offrdquo. This is a rather unfortunate comment thatrsquos simply not based in reality. Setting that aside therersquos some interesting comments: news. ycombinator/itemid4748624 UPDATE 2 - Irsquove posted a follow-up FAQ that answers some common questions Irsquove received from traders about this post.
 
No comments:
Post a Comment