Machine learning forex 2012


O aprendizado de máquina é um campo de inteligência artificial onde programas de computador aprendem em vez de seguir cegamente um script. Com dados de treinamento suficientes, você pode ensinar esses algoritmos a dirigir um carro, pilotar um helicóptero ou construir o melhor mecanismo de busca do mundo. Aqui estão os resultados que obtive com a minha abordagem inicial na aplicação de aprendizado de máquina para negociação forex. Uma variedade de algoritmos é colocada em prática para tentar prever a evolução de um instrumento com dados de apenas 8 barras diárias para o passado. Para cada dia, quatro valores são registrados, os três primeiros registram informações sobre o movimento do dia anterior, próximo ao dia, alto, baixo e próximo, enquanto o quarto registra o volume do dia. Isso faz com que 32 variáveis ​​independentes sejam totais. Os dados são obtidos a partir de três instrumentos no banco de dados dukascopy, EURUSD, AUDJPY e GBPCHF diariamente Ask bares de 1º de janeiro de 2008 a 31 de dezembro de 2011, com finais de semana combinados na segunda-feira seguinte. Para cada um dos algoritmos testados, os primeiros dois anos foram usados ​​para treinar os modelos, enquanto 2012 foi usado para testá-los. A biblioteca java aberta para algoritmos de aprendizado de máquina usada vem do WEKA: Data Mining Software em Java i. Você pode baixar a biblioteca ou o programa de fácil utilização livremente em cs. waikato. ac. nz/ml/weka/. Prevendo a direção do mercado Esses testes avaliam até que ponto, se houver, é possível prever o movimento geral de amanhã (de perto para perto) com base em dados de oito dias anteriores usando uma variedade de algoritmos de aprendizado de máquina. Uma correlação alta significa que o modelo prevê bem o movimento geral do dia seguinte. Nesse caso, as correlações são muito próximas de zero, de modo que os modelos não podem prever o movimento geral do mercado. Prevendo o alcance do mercado Para o forex, o intervalo é definido aqui como a diferença entre o dayrsquos high e o dayrsquos low como uma porcentagem do fechamento anterior (para que diferentes instrumentos sejam comparáveis). Um dos métodos mais simples e melhores, os vizinhos mais próximos, apresenta o melhor desempenho nessa tarefa. Esse método, para cada caso, simplesmente examina os n casos no conjunto de treinamento que mais parecem e prevê uma média ponderada de seu intervalo. Prever o movimento absoluto de um instrumento O movimento absoluto de um instrumento é o movimento geral de um dia, mas sempre positivo. Isso é um pouco semelhante ao intervalo. É impossível prever a direção do mercado para o dia seguinte com base apenas em oito barras e volumes anteriores, pelo menos usando esses algoritmos. No entanto, a primeira falha desta abordagem é talvez que ela tente prever todos os dias. Talvez algum processo de eliminação possa remover uma grande quantidade de dados que é na maior parte imprevisível. Por outro lado, existem outros algoritmos, como redes neurais recorrentes, mais apropriados para a tarefa em questão. É possível prever, até certo ponto, o alcance do dia seguinte e, portanto, logicamente, o movimento absoluto (de perto para próximo). Esse tipo de informação pode não ser relevante para os comerciantes que seguem as tendências, mas pode ser relevante para os cambistas que precisam prever o intervalo de um par de moedas. Acredito que esses algoritmos superam os indicadores de alcance, como o ATR, no sentido de que são mais preditivos do que indicativos. 1 Mark Hall, Frank Eibe, Geoffrey Holmes, Bernhard Pfahringer, Peter Reutemann, Ian H. Witten (2009) O Software de Mineração de Dados WEKA: Uma Atualização SIGKDD Explorations, Volume 11, Edição 1. Aprendizado da Máquina Aplicado ao Aprendizado de Máquina Forex pode nos ajudar otimizar as estratégias de negociação automática. Ao estudar a enorme quantidade de informações passadas, podemos identificar padrões que nos ajudam a prever a evolução do mercado de forma suficiente. É claro que isso é o que alguns traders vêm fazendo há muito tempo, mas a automatização do processo nos permite encontrar estratégias muito melhores e muito mais rápidas do que seria necessário para um ser humano. Aqui nós propomos uma estratégia especulativa que foi testada com sucesso e demonstra as possibilidades trazidas pelo aprendizado de máquina no forex. Encontrar automaticamente uma estratégia especulativa vencedora no eurusd EUR / USD é um par muito lucrativo para uma estratégia especulativa construída a partir de algoritmos de aprendizado de máquina, embora nosso método seja capaz de encontrar estratégias vencedoras em outros instrumentos e alguns que funcionem em vários instrumentos, as estratégias desenvolvidas para EUR / USD dão os melhores retornos. É assim que as estratégias são construídas. Não podemos alimentar o preço real ao algoritmo porque queremos que ele reconheça padrões independentemente de sua altura em um gráfico. Nós, portanto, alimentamos os movimentos de preços, de alto a alto e de baixo a baixo (melhor que abrir para fechar). Este é um tipo simples de indicador com um poder discriminativo surpreendente entre padrões de forex. Mas que intervalos devemos escolher para os nossos indicadores e usar o alto e o baixo durante o período? Nosso algoritmo responde a essa pergunta para nós, otimizando um conjunto de indicadores e pontuando-o pela boa estratégia que podemos construir sobre ele. O método usado para otimização é um algoritmo genético. Construímos alguns conjuntos de indicadores, os mais fortes (maior pontuação) têm uma melhor chance de produzir mais e de menos, enquanto os mais fracos são substituídos. Este método tende a otimizar os conjuntos de indicadores e é milhares de vezes mais rápido do que simplesmente testar todas as possibilidades. Classificamos um conjunto de indicadores pela boa estratégia que podemos construir com ele. As estratégias são construídas automaticamente usando uma segunda etapa de otimização e uma estrutura de dados, a rede neural artificial. A rede neural toma como entrada os valores do indicador para um determinado período e gera algumas informações sobre o futuro do instrumento. O que prevê a rede neural artificial? As redes neurais tentam prever um fator de lucro normalizado (lucro bruto dividido pela perda bruta) em um único negócio durante um certo período no futuro. O período em questão pode variar entre 3 e 10 dias, é um parâmetro otimizável da estratégia. Portanto, nossa estratégia não usa necessariamente perdas de parada e lucros, em vez disso, abrimos uma posição por um período de tempo predeterminado e fechamos a posição no final desse período, o que quer que tenha acontecido. A rede é classificada pela porcentagem de previsões corretas ponderadas pela precisão do itrsquos. Alternativamente, nossas redes neurais podem prever qual parte do saldo da conta deve ser investida, as redes são então classificadas pelo saldo final da conta ou pelo fator geral de lucro. Armadilhas comuns nas estratégias de negociação automática Há algumas armadilhas comuns a serem observadas em estratégias onde a estratégia parece oferecer lucros incríveis, mas é inútil na vida real. A precaução mais importante é que o período em que a estratégia é testada não seja o mesmo período em que ela é construída. Caso contrário, podemos simplesmente gerar milhares de estratégias aleatórias complexas e escolher aquela que funciona melhor em um período específico, mas só quando tivermos um resultado positivo em um conjunto independente de dados que possamos começar a confiar em nossa estratégia. Na realidade, usamos três conjuntos de dados independentes do tempo, o conjunto de treinamento é usado para construir o sistema, o conjunto de validação é usado para evitar o excesso de aprendizado e o conjunto de testes é usado para os resultados relatados. No nosso caso, chegamos a 60 apostas corretas no teste que durou o ano passado. Também é uma má prática otimizar um take-profit e parar a perda desde o início. Ao otimizar uma estratégia em um período que é muito curto, pode-se obter facilmente um lucro geral surpreendente, colocando o take-profit muito próximo e o stop-loss muito longe. Quando o stop-loss é atingido por um longo período, as conseqüências são devastadoras. Uma vez encontrada uma estratégia lucrativa, o take-profit e o stop loss podem ser otimizados, mas nunca devem estar muito distantes um do outro. Colocar um take profit e stop loss nunca é uma estratégia em si, e sim uma maneira de controlar o risco. Uma estratégia ótima testada com um simulador reconhecido Nossa estratégia obtém 62,5 apostas corretas teóricas no EUR / USD. Mas podemos obter uma melhor avaliação da estratégia com uma boa simulação e uma aplicação real da estratégia. Por esse motivo, implementamos a estratégia usando a API JForex e a testamos na plataforma jForex. Mais uma vez, tivemos o cuidado de não misturar o período usado para otimizar nossa estratégia e o período usado para testá-la. Também refinamos nossa estratégia, ajustando um pouco mais o montante investido em cada posição para refletir as previsões do estrategista. Isso melhorou muito o fator lucro (lucro bruto dividido pela perda bruta) de nossa estratégia. Usamos uma alavancagem para aumentar ou diminuir o risco e o retorno esperado. Em mais de 161 negociações, o fator lucro de nossa estratégia no período de teste é de 2,87 Isso significa que obtemos 2,87 vezes mais lucro do que o rebaixamento em negociações. Embora tenhamos apenas 60,24 negócios lucrativos, eles são muito mais lucrativos do que os comércios perdedores não são lucrativos. As estatísticas finais que achamos muito reveladoras são o rebaixamento máximo consecutivo, 5, e o lucro máximo consecutivo, 18 do patrimônio líquido. Temos uma conta ativa executando a estratégia, mas ela vem fazendo isso por um período de tempo muito pequeno para avaliá-la dessa maneira. Também otimizamos um take-profit e um stop-loss. Como nos recusamos a ver esses fatores como parâmetros de estratégia, mas preferimos vê-los como parâmetros de controle de risco, sempre os mantemos iguais uns aos outros. O oposto cria um desequilíbrio que dificulta a avaliação da estratégia. Mais uma vez, esses parâmetros foram otimizados em um período diferente do período de teste. Os resultados mostram que um stop-loss e um take-profit devem realmente ser usados ​​e que devem ser colocados muito próximos, em torno de 18 pips. Colocá-los mais perto do preço de abertura melhora o fator geral de lucro, mas a esses níveis, as comissões e taxas tornam-se problemáticas. O stop-loss e o take-profit melhoram o fator lucro e a estabilidade geral da estratégia, enquanto impedem o lucro total, mas a alavancagem pode remediar a situação. Desvantagens de uma estratégia de negociação automática Uma crítica comum a respeito de estratégias de caixa-preta, como a nossa, é que o mercado sempre pode mudar repentinamente e as estratégias que funcionaram antes que funcionem indefinidamente. Temos que admitir que isso é totalmente fundado, e acreditamos que nada pode ser feito para evitar isso sem uma bola de cristal para prever o futuro. No entanto, também é nosso sentimento que esta é a verdade com qualquer estratégia especulativa, feita pelo homem ou de outra forma. É claro que o forex sofreu grandes mudanças no passado. O volume é um ótimo indicador para esse assunto que realmente nos dá uma visão sobre o momento em que a forma como um instrumento é negociado muda. No gráfico abaixo, você pode observar a evolução do volume para EURUSD nos últimos 16 anos. Uma estratégia construída com dados muito distantes não funciona mais. No entanto, a nossa estratégia tem funcionado igualmente bem no EUR / USD nos últimos anos e nada indica que mudará em breve. Há duas coisas que podemos fazer para nos protegermos contra uma mudança repentina na forma como os instrumentos Forex são negociados. Primeiro, podemos monitorar o mercado e esperar pelo momento em que nossa estratégia não funciona mais, usando as estatísticas que a estratégia deve seguir, como o máximo empuxo consecutivo e monitorando o volume. Em segundo lugar, podemos fazer whatrsquos chamado aprendizado on-line, onde nossa estratégia é continuamente otimizada em novos dados. Esta segunda opção é uma boa prática, mas não protege contra as mudanças súbitas que são típicas no forex a cada poucos anos. A melhor solução é implementar ambos os métodos, otimizando regularmente as nossas estratégias, estando ciente de que uma mudança mais profunda na estratégia será necessária. A outra crítica é que nunca entendemos realmente o que um modelo de caixa preta faz. Este não é o caso para nós, pois o nosso modelo é bastante simples, no entanto, devemos levar o segredo ao nosso túmulo ou pelo menos até que a estratégia não seja mais lucrativa. Obrigado por ler, Traduzir para RussianMachine Learning with algoTraderJo Cadastrou-se em Dez 2014 Status: Membro 383 Postagens Olá companheiros comerciantes, estou começando este segmento na esperança de compartilhar com vocês alguns dos meus desenvolvimentos no campo da aprendizagem de máquina. Embora eu possa não compartilhar com você os sistemas exatos ou implementações de codificação (não espere obter qualquer coisa para "plugar e reproduzir" e ficar rico com esse tópico), compartilharei com você idéias, resultados do meu experimento e possivelmente outros aspectos do meu trabalho. Estou iniciando este tópico na esperança de podermos compartilhar idéias e ajudar uns aos outros a melhorar nossas implementações. Começarei com algumas estratégias simples de aprendizado de máquina e entrarei em coisas mais complexas com o passar do tempo. Espero que você aproveite o passeio Registrado em Dez 2014 Status: Membro 383 Postagens Eu quero começar por dizer algumas coisas básicas. Me desculpe se a estrutura dos meus posts deixa muito a desejar, eu não tenho nenhuma experiência de postagem no fórum, mas espero obter algum com o tempo. No aprendizado de máquina, o que queremos fazer é simplesmente gerar uma previsão útil para nossa negociação. Para fazer essa previsão, geramos um modelo estatístico usando um conjunto de exemplos (saídas conhecidas e algumas entradas em que temos poder preditivo para prever essas saídas) e fazemos uma previsão de uma saída desconhecida (nossos dados recentes) usando o modelo que criamos com os exemplos. Para resumir, é um processo bastante simples, onde fazemos o seguinte: Selecione o que queremos predizer (este será nosso alvo (s)) Selecione algumas variáveis ​​de entrada que acreditamos que possam prever nossos alvos Crie um conjunto de exemplos usando dados passados com nossas entradas e nossos alvos 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 insumos conhecidos Trocar usando esta informação Eu quero dizer desde o início que é muito importante evitar fazer o que muitos trabalhos acadêmicos sobre aprendizado 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 de cotações-de-amostra. Construir um modelo com 10 anos de dados e depois testá-lo nos dois últimos não faz sentido, sujeito a muitos tipos de vieses estatísticos que discutiremos mais adiante. Em geral, você verá que os modelos de aprendizado de máquina que eu construo são treinados em cada barra (ou toda vez que eu preciso tomar uma decisão) usando uma janela móvel de dados para a construção de exemplos (somente exemplos recentes são considerados relevantes). Claro, essa abordagem não é estranha a alguns tipos de vieses estatísticos, mas removemos o quotelephant na sala ao usar a ampla abordagem de sample-in-sample da maioria dos trabalhos acadêmicos (o que, não é surpresa, muitas vezes leva a abordagens que não são realmente útil para o comércio). Há principalmente três coisas para se preocupar ao construir um modelo de aprendizado de máquina: O que prever (com qual alvo) Com o que prever (quais entradas) Como relacionar o alvo e insumos (qual modelo) A maior parte do que vou mencionar Neste tópico, o foco será responder a essas perguntas, com exemplos reais. Se você quiser escrever qualquer dúvida que possa ter, tentarei dar uma resposta ou simplesmente avisá-lo se eu responderei mais tarde. Cadastrado em Dec 2014 Status: Membro 383 Postagens Vamos começar a trabalhar agora. Um exemplo prático real usando o aprendizado de máquina. Vamos supor que queremos construir um modelo muito simples usando um conjunto muito simples de entradas / metas. Para este experimento, estas são as respostas para as perguntas: O que prever (qual alvo) - gt A direção do dia seguinte (alta ou baixa) Com qual previsão (quais entradas) - gt A direção dos últimos 2 dias Como para relacionar o alvo e as entradas (que modelo) - gt Um classificador de mapa linear Este modelo tentará prever a direcionalidade da próxima barra diária. Para construir o nosso modelo, tomamos os últimos 200 exemplos (uma direção de dia como meta e as direções de dois dias anteriores como entradas) e treinamos um classificador linear. Fazemos isso no início de cada barra diária. Se tivermos um exemplo em que dois dias de alta levam a um dia de baixa, as entradas seriam 1,1 e o alvo seria 0 (0bearish, 1bullish), usamos 200 desses exemplos para treinar o modelo em cada barra. Esperamos ser capazes de construir um relacionamento onde a direção de dois dias produza alguma probabilidade acima do aleatório para prever corretamente a direção dos dias. Usamos um stoploss igual a 50 do intervalo médio de 20 dias em todas as transações. Imagem anexada (clique para ampliar) Uma simulação desta técnica de 1988 a 2014 sobre o EUR / USD (dados anteriores a 1999 é DEM / USD) acima mostra que o modelo não tem geração de lucro estável. Na verdade, este modelo segue um passeio aleatório negativamente tendencioso, o que faz com que ele perca dinheiro em função do spread (3 pips no meu sim). Observe o desempenho aparentemente quimo expressivo que temos em 1993-1995 e em 2003-2005, onde aparentemente pudemos prever com sucesso a direcionalidade dos próximos dias usando um modelo linear simples e os resultados direcionais dos últimos dois dias. Este exemplo mostra várias coisas importantes. Por exemplo, em escalas de tempo curtas (que podem levar alguns anos), você pode ser facilmente enganado pela aleatoriedade - você pode pensar que tem algo que funciona, o que na verdade não funciona. Lembre-se de que o modelo é reconstruído em todas as barras, usando os 200 exemplos de entrada / destino anteriores. Que outras coisas você acha que pode aprender com este exemplo? Poste seus pensamentos. então você previu que compradores ou vendedores entrariam. Hmm, mas o que exatamente tem a ver com o preço subindo ou descendo 100 pips. O preço pode reagir de várias maneiras - pode ser tank por algum tempo (enquanto todas as ordens de limite são preenchidas) e depois continue avançando. Ele também pode refazer 5, 10, 50 ou mesmo 99 pips. Em todos esses casos, você estava certo sobre compradores ou vendedores entrando, mas você deve entender que essa análise não tem muito a ver com o seu negócio indo de 90pips a 100pips. Sim, você está certo Esta é uma grande parte da razão pela qual estamos obtendo resultados ruins quando usamos o algoritmo de mapeamento linear. Porque a nossa rentabilidade está mal relacionada com a nossa previsão. Prever que os dias são de alta / baixa é de uso limitado se você não sabe quanto preço vai se mover. Talvez as suas previsões estejam corretas apenas nos dias que lhe dão 10 pips e você obtém todos os dias que têm 100 direcionalidades pip totalmente erradas. O que você consideraria um alvo melhor para um método de aprendizado de máquina? Sim, você está certo. Esta é uma grande parte da razão pela qual estamos obtendo resultados ruins quando usamos o algoritmo de mapeamento linear. Porque a nossa rentabilidade está mal relacionada com a nossa previsão. Prever que os dias são de alta / baixa é de uso limitado se você não sabe quanto preço vai se mover. Talvez as suas previsões estejam corretas apenas nos dias que lhe dão 10 pips e você obtém todos os dias que têm 100 direcionalidades pip totalmente erradas. O que você consideraria um alvo melhor para um método de aprendizado de máquina Vamos dizer se você tem 100 pip TP e SL, eu gostaria de prever qual vem primeiro: TP ou SL Exemplo: TP veio primeiro 1 SL veio primeiro 0 (ou -1, no entanto você mapeá-lo)

Комментарии