Friday 21 July 2017

Algoritmo Genético, Uma Aplicação Para O Design Do Sistema De Negociação Técnica


Algoritmo genético de SnowCron em sistemas de negociação FOREX usando o algoritmo genético para criar estratégia de negociação FOREX lucrativa. Algoritmo Genético no Sistema de Redes Neurais do Cortex Feedforward Backpropagation Neural Network Aplicação para computação baseada em cálculos baseados em Forex. Este exemplo usa conceitos e ideias do artigo anterior, então leia Algoritmo Genético de Rede Neural em Sistemas de Negociação FOREX primeiro, embora não seja obrigatório. Sobre este texto Antes de tudo, leia o aviso legal. Este é um exemplo de usar a funcionalidade do algoritmo de algoritmo de algoritmo de redes neurônicas do Cortex, não um exemplo de como fazer negócios rentáveis. Eu não sou seu guru, nem eu devo ser responsável por suas perdas. O software Cortex Neural Networks tem redes neurais nele, e a FFBP que discutimos antes é apenas uma maneira de escolher estratégias de negociação forex. É uma boa técnica, poderosa e quando aplicada corretamente, muito promissora. No entanto, tem um problema - para ensinar a Rede Neural. Precisamos saber o resultado desejado. É bastante fácil de fazer quando fazemos a aproximação de função, nós apenas tomamos o valor real de uma função, porque sabemos o que deveria ser. Quando fazemos a previsão da rede neural. Nós usamos a técnica (descrita em artigos anteriores) de ensinar a Rede Neural na história, novamente, se prevermos, digamos, uma taxa de câmbio, sabemos (durante a formação) qual é a previsão correta. No entanto, quando estamos construindo um sistema de comércio, não temos idéia do que é a decisão de negociação correta, mesmo que conheçamos a taxa de câmbio. Como fato, temos muitas estratégias de negociação forex que podemos usar em qualquer ponto do tempo e Nós precisamos encontrar um bom - como o que devemos alimentar como o resultado desejado da nossa Rede Neural Se você seguiu o nosso artigo anterior, você sabe, que nos enganamos para lidar com esse problema. Nós ensinamos a Rede Neural a fazer uma previsão de taxa de câmbio (ou índice de taxa de câmbio), e então usamos essa previsão para fazer negociação. Então, fora da parte da rede Neural do programa, tomamos uma decisão sobre a qual a Rede Neural é a melhor. Os algoritmos genéticos podem lidar diretamente com este problema, eles podem resolver o problema declarado como encontrar os melhores sinais comerciais. Neste artigo, vamos usar o software Cortex Neural Networks para criar esse programa. Usando Algoritmos Genéticos Algoritmos Genéticos estão muito bem desenvolvidos e muito diversos. Se você quiser aprender tudo sobre eles, sugiro que você use a Wikipedia, pois este artigo é apenas sobre o que o Cortex Neural Networks Software pode fazer. Com o software Cortex Neural Networks. Podemos criar uma Rede Neural que leve alguns dados, digamos, valores de um indicador e produz algum resultado, digamos, sinais de negociação (comprar, vender, manter.) E parar a perda, obter níveis de lucro para posições a serem abertas. Claro, se semearmos os pesos desta Rede Neural ao acaso, os resultados comerciais serão terríveis. No entanto, dizemos que criamos uma dúzia de tais NNs. Então podemos testar o desempenho de cada um deles, e escolher o melhor, o vencedor. Esta foi a primeira geração de NNs. Para continuar a segunda geração, precisamos permitir que o nosso vencedor procria, mas para evitar a obtenção de cópias idênticas, vamos adicionar alguns números aleatórios aos pesos das suas descendentes. Na segunda geração, temos o nosso vencedor da primeira geração e as cópias imperfeitas (mutadas). Vamos fazer testes novamente. Teremos outro vencedor, o que é MELHOR e qualquer outra Rede Neural na geração. E assim por diante. Simplesmente permitimos que os vencedores criem e eliminem os perdedores, assim como na evolução da vida real, e obteremos nossa Rede Neural de melhor negociação. Sem qualquer conhecimento prévio sobre o que o sistema de negociação (algoritmo genético) deveria ser. Algoritmo Genético da Rede Neural: Exemplo 0 Este é o primeiro exemplo do algoritmo genético. E muito simples. Nós vamos passar por ele passo a passo, para aprender todos os truques que os exemplos a seguir usarão. O código tem comentários em linha, então vamos apenas nos concentrar nos momentos-chave. Primeiro, criamos uma rede neural. É usar pesos aleatórios, e ainda não foi ensinado. Então, no ciclo, fazemos 14 cópias dele, usando a fumagem MUTATIONNN. Esta função faz uma cópia de uma rede Neural de origem. Adicionando valores aleatórios de 0 para (no nosso caso) 0,1 para todos os pesos. Mantivemos alças para 15 NN resultantes em uma matriz, podemos fazê-lo, pois o identificador é apenas um número inteiro. A razão pela qual usamos 15 NNs não tem nada a ver com a negociação: o software Cortex Neural Networks pode traçar até 15 linhas em um gráfico simultaneamente. Podemos usar diferentes abordagens para o teste. Primeiro, podemos usar o conjunto de aprendizagem, tudo de uma vez. Em segundo lugar, podemos testar, digamos, 12000 resores (de 100000), e caminhar pelo conjunto de aprendizagem, do começo ao fim. Isso tornará o know-how diferente, pois buscaremos redes de redes neuronais que sejam rentáveis ​​em qualquer parte de dados, e não apenas em todo o conjunto. A segunda abordagem pode nos dar problemas, se a mudança de dados, desde o início até o fim. Em seguida, a rede evoluirá, obtendo a capacidade de troca no final do conjunto de dados e perdendo a capacidade de trocar no seu início. Para resolver esse problema, iremos levar aleatoriamente 12000 fragmentos de registros de dados e alimentá-lo para a Rede Neural. É simplesmente um ciclo sem fim, já que 100000 ciclos nunca serão alcançados em nossa velocidade. Abaixo, adicionamos uma criança para cada rede, com pesos ligeiramente diferentes. Note-se que 0,1 para o tange de mutação não é a única escolha, como fato de fato, mesmo este parâmetro pode ser otimizado usando o algoritmo genético. Os NNs recém-criados são adicionados após 15 existentes. Desta forma, temos 30 NNs em uma matriz, 15 antigos e 15 novos. Então, vamos fazer o próximo ciclo de testes e matar perdedores, de ambas as gerações. Para fazer testes, aplicamos a Rede Neural aos nossos dados, para produzir saídas, e depois chamar a função Test, que usa essas saídas para simular a negociação. Os resultados da negociação são usados ​​para desidir, quais NNs são melhores. Usamos um intervalo de registros nLearn, de nStart para nStart nLearn, onde nStart é um ponto aleatório dentro do conjunto de aprendizado. O código abaixo é um truque. A razão pela qual usamos é ilustrar o fato de que o algoritmo genético pode criar algoritmos genéticos. Mas não será necessariamente o melhor, e também, para sugerir, que podemos melhorar o resultado, se implicarmos algumas limitações ao processo de aprendizagem. É possível que nosso sistema comercial funcione muito bem em negócios longos, e muito pobre em curto, ou vice-versa. Se, digamos, os negócios longos são muito bons, esse algoritmo genético pode ganhar, mesmo com grandes perdas em transações curtas. Para evitá-lo, atribuímos mais peso a negócios longos em trocas ímpares e curtas em ciclos pares. Este é apenas um exemplo, não há garantia, que irá melhorar alguma coisa. Mais sobre isso abaixo, em discussão sobre correções. Tecnicamente, você não precisa fazê-lo, ou pode fazê-lo de forma diferente. Adicione lucro a uma matriz ordenada. Ele retorna uma posição de inserção, então usamos essa posição para adicionar identificadores de rede Neural, aprendendo e testando lucros para arrays não classificados. Agora, temos dados para a Rede Neural atual no mesmo índice de matrizes que seu lucro. A idéia é chegar a uma série de NNs, ordenados por rentabilidade. Como a matriz é classificada por lucro, para remover 12 redes, que são menos rentáveis, precisamos apenas remover NNs 0 a 14 As decisões de negociação são baseadas no valor do sinal da Rede Neural, a partir deste ponto de vista o programa é idêntico aos exemplos de Artigo anterior. Estratégia de negociação FOREX: exemplo de discussão 0 Em primeiro lugar, vamos examinar os gráficos. O primeiro gráfico de lucro durante a primeira iteração não é bom, como seria de esperar, a rede neural perde dinheiro (imagem evolution00gen0.png copiado após a primeira iteração da pasta de imagens): a imagem com lucro no ciclo 15 é melhor, às vezes , O algoritmo genético pode aprender muito rápido: no entanto, observe a saturação em uma curva de lucro. É interessante também olhar para a forma como os lucros individuais mudam, tendo em mente, esse número de curva, digamos, 3 nem sempre é para a mesma Rede Neural. Na medida em que eles estão nascendo e terminaram o tempo todo: note também que o pequeno sistema de negociação automatizado forex é pobre em negócios curtos e muito melhor em longos, o que pode ou não estar relacionado ao fato de que o dólar estava caindo em comparação com Euro durante esse período. Também pode ter algo a ver com os parâmetros do nosso indicador (talvez, precisamos de um período diferente para calções) ou a escolha de indicadores. Aqui está o histórico após 92 e 248 ciclos: para nossa surpresa, o algoritmo genético falhou completamente. Procuremos descobrir o porquê, e como ajudar a situação. Em primeiro lugar, cada geração não deve ser melhor do que a anterior. A resposta é não, pelo menos não dentro do modelo que usamos. Se tomarmos TODAS as aprendizagens definidas de uma só vez, e usamos repetidamente para ensinar nossos NNs, então sim, eles melhorarão em cada geração. Mas, em vez disso, tomamos fragmentos aleatórios (12000 registros no tempo) e os usamos. Duas perguntas: por que o sistema falhou em fragmentos aleatórios de conjunto de aprendizado e por que não usamos todo o conjunto de aprendizado bem. Para responder a segunda pergunta, eu fiz. NNs funcionou muito - no aprendizado definido. E eles falharam no conjunto de testes, pelo mesmo motivo que falha quando usamos o aprendizado da FFPB. Para dizer de maneira diferente, nossos NNs se especializaram demais, eles aprenderam a sobreviver no ambiente ao qual eles estão acostumados, mas não fora dele. Isso acontece muito na natureza. A abordagem que tomamos em vez disso foi destinada a compensar isso, ao obrigar NNs a se comportar bem em qualquer fragmento aleatório do conjunto de dados, de modo que, com sorte, eles também poderiam realizar em um conjunto de testes desconhecido. Em vez disso, eles falharam tanto no teste quanto no conjunto de aprendizado. Imagine animais, vivendo em um deserto. Muito sol, sem neve. Este é um mercado metafor para rizing, pois os nossos dados NNs desempenham o papel de meio ambiente. Os animais aprenderam a viver em um deserto. Imagine animais, que vivem em clima frio. Neve e sem sol. Bem, eles se ajustaram. No entanto, em nosso experimento, colocamos aleatoriamente nossos NNs em um deserto, na neve, na água, nas árvores. Apresentando-lhes diferentes fragmentos de dados (aumentando aleatoriamente, caindo, plana). Os animais morreram. Ou, de modo diferente, selecionamos a melhor rede neural para o conjunto de dados aleatórios 1, que, digamos, era para o mercado crescente. Em seguida, apresentamos, aos vencedores e seus filhos, uma queda dos dados dos mercados. NNs apresentaram um mau desempenho, nós melhoramos os melhores artistas, talvez, uma das crianças mutantes, que perdemos a capacidade de negociar no mercado em expansão, mas conseguiu uma certa capacidade de lidar com a queda de um. Então, voltamos a mesa novamente e, novamente, conseguimos o melhor desempenho - mas melhor entre os mais pobres. Nós simplesmente não damos a nossos NNs chances de se tornarem universais. Existem técnicas que permitem ao algoritmo genético aprender novas informações sem perder o desempenho em informações antigas (afinal, os animais podem viver no verão e no inverno, certo, então a evolução é capaz de lidar com mudanças repetitivas). Podemos discutir essas técnicas mais tarde, embora este artigo seja mais sobre o uso do software Cortex Neural Networks. Do que sobre a construção de um sistema de negociação automatizado forex bem sucedido. Algoritmo Genético da Rede Neural: Exemplo 1 Agora é hora de falar sobre correções. Um algoritmo genético simples que criamos durante o passo anterior tem duas falhas principais. Primeiro, não conseguiu negociar com lucro. Está tudo bem, podemos tentar usar sistema parcialmente treinado (foi lucrativo no início). A segunda falha é mais séria: não temos controle sobre as coisas, que esse sistema faz. Por exemplo, pode aprender a ser lucrativo, mas com grandes remessas. É um fato bem conhecido, que na vida real, a evolução pode otimizar mais de um parâmetro simultaneamente. Por exemplo, podemos obter um animal, que pode correr rápido E ser resistente ao frio. Por que não tentar fazer o mesmo no nosso sistema de negociação automatizado forex. Isso é quando usamos correções, que são apenas o conjunto de punições adicionais. Digamos, nosso sistema é negociado com drawdown 0.5, enquanto queremos confirmá-lo para 0 a 0.3 intervalo. Para dizer ao sistema que cometeu um erro, diminuímos o lucro (um usado para determinar, qual algoritmo genético ganhou) até o grau, que é proporcional ao tamanho do DD. Então, o algoritmo de evolução cuida do resto. Existem alguns outros fatores, que queremos levar em consideração: talvez queiramos ter um número maior ou menor de operações de compra e venda, queremos ter mais operações lucrativas, então de falhas, podemos querer que o gráfico de lucro Ser linear e assim por diante. Na evolution01.tsc implementamos um conjunto simples de correções. Em primeiro lugar, usamos um número grande para um valor de correção inicial. Nós o multiplicamos para um pequeno (geralmente, entre 0 e 1) valores, dependendo da punição que queremos aplicar. Então, multiplicamos nosso lucro por esta correção. Como resultado, o lucro é corrigido, para refletir o quanto o algoritmo genético corresponde aos nossos outros critérios. Então usamos o resultado para encontrar uma Rede Neural de vencedores. FOREX Estratégia de Negociação: Discutir o exemplo 1 O exemplo 1 funciona muito melhor do que o exemplo 0. Durante os primeiros 100 ciclos, ele aprendeu muito, e os gráficos de lucro parecem tranquilizadores. No entanto, como no exemplo 0, os negócios longos são muito mais rentáveis, o que provavelmente significa que existe um problema na nossa abordagem. No entanto, o sistema encontrou um equilíbrio entre algumas das condições iniciais contraditórias: há algumas dinâmicas positivas tanto no conjunto de aprendizado como, mais importante, no conjunto de testes. Quanto ao aprendizado adicional, no ciclo 278 podemos ver, que nosso sistema foi superado. Isso significa que ainda temos progresso no aprendizado definido: Mas o conjunto de testes mostra fraqueza: Este é um problema comum com os NNs: quando o ensinamos no aprendizado definido, ele aprende a lidar com isso e, às vezes, ele aprende muito bem - ao Grau, quando perde o desempenho no conjunto de testes. Para lidar com esse problema, uma solução tradicional é usada: continuamos procurando a Rede Neural. Que executa o melhor no conjunto de testes, e salve-o, sobrescreva o melhor possível, cada vez que o novo pico é alcançado. Esta é a mesma abordagem, que usamos no treinamento FFBP, exceto, desta vez, temos que fazê-lo nós mesmos (adicionando código, que procura uma melhor Rede Neural em um conjunto de testes, e chamando a SAVENN, ou exportando pesos da Rede Neural para um Arquivo). Desta forma, quando você parar seu treinamento, você terá o melhor desempenho ON TESTING SET salvo e esperando por você. Observe também que não é o máximo. Lucro que você está procurando, mas ótimo desempenho, então considere usar correções, ao procurar o melhor desempenho em um conjunto de testes. Algoritmo genético para Análise Técnica do FOREX: Onde agora Depois de ter obtido a sua Rede Neural de vencedores. Você pode seguir as etapas, descritas no artigo anterior, para exportar pesos daquela Rede Neural. E então usá-los em sua plataforma de negociação em tempo real, como Meta Trader, Trade Station e assim por diante. Alternativamente, você pode se concentrar em outras formas de otimizar a Rede Neural. Ao contrário do algoritmo FFBP, aqui você pode obter avay usando conjuntos de aprendizagem e teste e mover a aprendizagem seqüencial. Download Cortex Order Cortex View Price List A visibilidade é muito importante para este site. Se você gosta, por favor, faça o link para este URLby Jih-chang Hsieh, Shih-hsin Chen, Pei-chann Chang, Yuan Taiwan. Nas últimas décadas, as técnicas de computação suave aplicaram-se amplamente para resolver problemas complexos. Entre as técnicas de computação suaves, o Sistema Artificial Imunológico (AIS) apareceu como uma nova abordagem que trata dos problemas de classificação. Neste artigo, um algoritmo AIS é desenvolvido e aplicado a um dois-gro. Nas últimas décadas, as técnicas de computação suave aplicaram-se amplamente para resolver problemas complexos. Entre as técnicas de computação suaves, o Sistema Artificial Imunológico (AIS) apareceu como uma nova abordagem que trata dos problemas de classificação. Neste artigo, um algoritmo AIS é desenvolvido e aplicado a um problema de classificação de dois grupos. Um exemplo do setor bancário taiwanês é discutido e os índices financeiros de cada banco de 1998 a 2002 foram coletados. Esse sistema deve distinguir o desempenho operacional (bom ou ruim) de cada banco para oferecer um material de referência para os gerentes ou investidores. O desempenho do AIS é comparado com outros cinco sistemas de alerta precoce, a saber, redes neurais genéticas (GNN), raciocínio baseado em casos (CBR), rede neural de backpropagation (BPN), análise de regressão logística (LR) e análise discriminante quadrática (QDA ). O resultado indica que o AIS proposto é mais de 10 melhores do que os três sistemas de alerta precoce de soft computing (GNN, CBR e BPN). O AIS supera os sistemas estatísticos de alerta precoce (LR e QDA) pelo menos 24. 1. e mais eficiente em vários campos. Várias técnicas de computação suave foram sempre consideradas em sistemas de alerta precoce financeiro, como Barniv et al. 1, Bell 2, Boritz e Kennedy 3, Colin -5--, Etheridge e Sriram 6, Kingdom e Feldman 7, Lee et al. 11 e Odom e Sharda 13. Toda a pesquisa mostrou resultados satisfatórios. Freitas e Timmis 7 apresentaram os fundamentos do artif. Por Jih-chang Hsieh, Pei-chann Chang, Shih-hsin Chen - Indústria, Procedimentos da Primeira Conferência Internacional sobre Computação, Informação e Controle Inovadores (ICICIC06, 2006). O algoritmo genético e a rede neural (GNN) são integrados para construir um financeiro Sistema de alerta precoce. Um exemplo do setor bancário taiwanês é discutido para testar a proporção de sucesso de cada sistema. O desempenho é comparado com outros quatro sistemas de alerta precoce, a saber, o raciocínio baseado em maiúsculas e minúsculas, backpropag. O algoritmo genético e a rede neural (GNN) são Integrado para construir um sistema de alerta precoce financeiro. Um exemplo do setor bancário de Taiwan é discutido para testar o índice de sucesso de cada sistema. O desempenho é comparado com outros quatro sistemas de alerta precoce, a saber, o raciocínio baseado em maiúsculas e minúsculas, a rede neural de backpropagation, a regressão logística Análise e análise discriminante quadrática. O resultado indica que o GNN proposto nesta pesquisa é um pouco superior aos outros dois alertas iniciais de informática soft s Ystems. E o GNN supera os sistemas estatísticos de alerta precoce pelo menos 13. d com técnicas de computação suaves. As técnicas de computação Variousssoft, especialmente redes neurais e algoritmos genéticos, são consideradas tais como Barniv et al. 1, Bell 2, Boritz e Kennedy 3, sColin -5--, Etheridge e Sriram 6, Kingdom andsFeldman 8, Lee et al. 10, e Odom e Shardas12. Toda a pesquisa mostrou resultados satisfatórios. Portanto, uma integração do algoritmo genético e n. Por Laura Nez-letamendia, Gonzalo Chavez, Julio De Castro, Salvador Carmona For. Este artigo estuda o problema de como as mudanças no projeto do algoritmo genético (GA) têm efeito sobre os resultados obtidos em aplicações da vida real. Neste estudo, focado na aplicação de uma GA para o ajuste das regras técnicas de negociação no contexto dos mercados financeiros, nossa tentativa. Este artigo estuda o problema de como as mudanças no projeto do algoritmo genético (GA) têm efeito sobre os resultados obtidos em aplicações da vida real. Neste estudo, focado na aplicação de uma GA para o ajuste das regras técnicas de negociação no contexto dos mercados financeiros, nossa tese tentativa é que o GA é robusto em relação às mudanças de design. A otimização dos sistemas técnicos de negociação é uma área adequada para a aplicação da GA metaheurística, uma vez que a complexidade do problema cresce exponencialmente à medida que novas regras técnicas são adicionadas ao sistema e como o tempo de resposta é crucial ao aplicar o sistema em tempo real dados. Até agora, a maioria dos aplicativos da GA para esse assunto evitava a questão da possível dependência de design em seus resultados. Os dados que relatamos, com base em nossos experimentos, não nos permitem refutar a hipótese de robustez da GA para projetar a implementação, quando se aplicam aos sistemas técnicos de negociação. Proceedings of the International Conference on Computational Methods in Sciences and Engineering 2004 Improving technical Sistemas de negociação usando um novo procedimento de algoritmo genético baseado em MATLAB Stephanos Papadamou a ,. George Stephanides b. Departamento de Economia, Universidade da Tessália, Argonauton e Filelinon, Volos, Grécia, Departamento de Informática Aplicada, Ciências Econômicas e Sociais da Universidade da Macedônia, Egnatias 156, Thessaloniki 54006, Grécia Recebido em 18 de maio de 2006. Aceito em 15 de dezembro de 2006. Disponível on-line 24 Janeiro de 2007. Estudos recentes nos mercados financeiros sugerem que a análise técnica pode ser uma ferramenta muito útil para prever a tendência. Os sistemas de negociação são amplamente utilizados para a avaliação do mercado no entanto, a otimização de parâmetros desses sistemas atraiu pouco interesse. Neste trabalho, para explorar o poder potencial do comércio digital, apresentamos uma nova ferramenta MATLAB baseada em algoritmos genéticos, a ferramenta é especializada na otimização de parâmetros de regras técnicas. Ele usa o poder dos algoritmos genéticos para gerar soluções rápidas e eficientes em termos comerciais reais. Nossa ferramenta foi testada extensivamente em dados históricos de um fundo UBS que investir em mercados de ações emergentes através de nosso sistema técnico específico. Os resultados mostram que o nosso GATradeTool proposto supera as ferramentas de software comumente usadas e não adaptativas em relação à estabilidade do retorno e economia de tempo durante todo o período de amostragem. No entanto, fornecemos provas de um possível efeito de tamanho populacional na qualidade das soluções. Mercados financeiros Previsão Algoritmos genéticos Investimento Regras técnicas 1 Introdução Os comerciantes e analistas de investimentos de hoje exigem ferramentas rápidas e eficientes em um mercado financeiro implacável. As batalhas na negociação agora são principalmente travadas na velocidade do computador. O desenvolvimento de novas tecnologias de software e a aparência de novos ambientes de software (por exemplo, MATLAB) fornecem a base para resolver problemas financeiros difíceis em tempo real. A grande funcionalidade matemática e financeira incorporada do MATLABs, o fato de ser uma linguagem de programação interpretada e compilada e sua independência de plataforma tornam-se adequados para o desenvolvimento de aplicativos financeiros. Evidência sobre os retornos obtidos pelas regras técnicas, incluindo estratégias de impulso (por exemplo, 14. 15. 16. 16. 25 e 20), regras móveis em média e outros sistemas comerciais 6. 2. 9 e 24 podem suportar a importância da análise técnica. No entanto, a maioria desses estudos ignorou a questão da otimização de parâmetros, deixando-os abertos à crítica do espionagem de dados e à possibilidade de viés de sobrevivência 7. 17 e 8. Tradicionalmente, os pesquisadores utilizaram a especificação ad hoc das regras de negociação. Eles usam uma configuração popular padrão ou experimentam aleatoriamente alguns parâmetros diferentes e selecionam o melhor com critérios baseados principalmente no retorno. Papadamou e Stephanides 23. implementaram uma nova caixa de ferramentas baseada em MATLAB para negociação técnica auxiliada por computador que incluiu um procedimento para problemas de otimização de parâmetros. No entanto, o ponto fraco de seu procedimento de otimização é o tempo: a função objetivo (por exemplo, lucro) não é uma função de erro quadrada simples, mas uma complicada (cada iteração de otimização passa pelos dados, gera sinais de negociação, calcula lucros, etc.). Quando os conjuntos de dados são amplos e você deseja re-optimizar seu sistema com freqüência e você precisa de uma solução o mais rápido possível, então, tentar todas as soluções possíveis para obter o melhor seria uma tarefa muito tediosa. Os algoritmos genéticos (GAs) são mais adequados, pois realizam pesquisas aleatórias de forma estruturada e convergem muito rápido em populações de soluções quase ótimas. O GA lhe dará um conjunto (população) de boas soluções. Os analistas estão interessados ​​em obter algumas boas soluções o mais rápido possível, em vez da melhor solução global. A solução globalmente melhor existe, mas é altamente improvável que continue a ser a melhor. O objetivo deste estudo é mostrar como os algoritmos genéticos, uma classe de algoritmos em computação evolutiva, podem ser empregados para melhorar o desempenho e a eficiência dos sistemas comerciais negociados. Não é aqui o propósito de fornecer uma justificativa teórica ou empírica para a análise técnica. Demonstramos nossa abordagem em uma tarefa de previsão específica baseada em mercados de ações emergentes. Este artigo está organizado da seguinte forma. O trabalho anterior é apresentado na Seção 2. O conjunto de dados e nossa metodologia estão descritos na Seção 3. Os resultados empíricos são discutidos na Seção 4. As conclusões seguem a Seção 5. 2 Trabalho prévio Há um grande corpo de trabalho de GA nos campos de informática e engenharia, mas pouco trabalho foi feito em áreas relacionadas a negócios. Ultimamente, tem havido um crescente interesse no uso de GA na economia financeira, mas até agora tem havido pouca pesquisa sobre negociação automatizada. Para o nosso conhecimento, o primeiro artigo publicado vinculando algoritmos genéticos aos investimentos foi de Bauer e Liepins 4. Bauer 5 em seu livro Algoritmos Genéticos e Estratégias de Investimento ofereceu orientação prática sobre como as AGs podem ser usadas para desenvolver estratégias comerciais atraentes baseadas em informações fundamentais. Essas técnicas podem ser facilmente estendidas para incluir outros tipos de informações, como dados técnicos e macroeconômicos, bem como preços passados. De acordo com Allen e Karjalainen 1. algoritmo genético é um método apropriado para descobrir as regras de negociação técnica. Fernndez-Rodrguez et al. 11 ao adotar a otimização de algoritmos genéticos em uma simples regra de negociação fornecem evidências para o uso bem-sucedido de AGs da Bolsa de Valores de Madri. Alguns outros estudos interessados ​​são aqueles de Mahfoud e Mani 18 que apresentaram um novo sistema baseado em algoritmos genéticos e aplicaram-no na tarefa de prever os desempenhos futuros de ações individuais por Neely et al. 21 e por Oussaidene et al. 22 que aplicou programação genética para previsão de câmbio e relatou algum sucesso. Uma das complicações na otimização GA é que o usuário deve definir um conjunto de parâmetros, como a taxa de cruzamento, o tamanho da população e a taxa de mutação. De acordo com De Jong 10, que estudou algoritmos genéticos na otimização de funções, o bom desempenho GA requer alta probabilidade de cruzamento (inversamente proporcional ao tamanho da população) e um tamanho de população moderado. Goldberg 12 e Markellos 19 sugerem que um conjunto de parâmetros que funcionam bem em vários problemas é um parâmetro de cruzamento 0.6, tamanho da população 30 e parâmetro de mutação 0.0333. O Bauer 4 realizou uma série de simulações sobre problemas de otimização financeira e confirmou a validade das sugestões Goldbergs. No presente estudo, realizaremos um estudo de simulação limitado testando várias configurações de parâmetros para o sistema de negociação escolhido. Nós também forneceremos provas para a AG proposta comparando nossa ferramenta com outras ferramentas de software. 3 Metodologia Nossa metodologia é conduzida em várias etapas. Em primeiro lugar, temos que implementar o nosso sistema de negociação com base em análises técnicas. Ao desenvolver um sistema de negociação, você precisa determinar quando entrar e quando sair do mercado. Se o comerciante estiver no mercado, a variável binária é igual a uma, de outra forma, é zero. Como negociadores de posição, baseamos a maioria das nossas decisões de entrada e saída em gráficos diários, construindo um indicador de tendência seguinte (Dimbeta). Este indicador calcula o desvio dos preços atuais a partir da sua média móvel de comprimento. Os indicadores utilizados no nosso sistema de negociação podem ser formalizados conforme abaixo: onde é o preço de fechamento do fundo no tempo e na função, o MovAv calcula a média móvel simples da variável fechar com o tempo de duração. Nosso sistema de negociação consiste em dois indicadores, o indicador Dimbeta e a Média de Mudança de Dimbeta dada pela seguinte equação: se cruzar para cima, entram longos no mercado (ou seja, compram sinal). Se cruzar para baixo, feche a posição longa no mercado (ou seja, o sinal de venda). Em segundo lugar, temos de otimizar nossa estratégia de negociação. Sabe-se que a maximização de funções objetivas, como lucro ou riqueza, pode otimizar os sistemas de negociação. A função objetiva mais natural para um comerciante insensível ao risco é o lucro. Na nossa ferramenta de software, consideramos os lucros multiplicativos. Os lucros multiplicativos são apropriados quando uma fração fixa de riqueza acumulada é investida em cada comércio longo. No nosso software, não são permitidas vendas curtas e o fator de alavancagem é fixado, a riqueza no tempo é dada pela seguinte fórmula: onde é o retorno realizado pelo período que termina no horário, os custos de transação e a variável binômica simbólica Indicando uma posição longa ou não (ou seja, 1 ou 0). O lucro é dado subtraindo da riqueza final a riqueza inicial,. A otimização de um sistema envolve a realização de testes múltiplos, variando um ou mais parâmetros (,) dentro das regras de negociação. O número de testes pode crescer rapidamente (Metastock tem um máximo de 32 000 testes). No FinTradeTool 23. não há limite, no entanto, no processamento do tempo dependendo do sistema de computador usado. Neste trabalho, investigamos a possibilidade de resolver o problema de otimização usando algoritmos genéticos. Os algoritmos genéticos (GAs) desenvolvidos pela Holland 13 constituem uma classe de técnicas de busca, adaptação e otimização baseadas nos princípios da evolução natural. Os algoritmos genéticos se prestam bem aos problemas de otimização, uma vez que eles sabem exibir robustez e podem oferecer vantagens significativas na metodologia da solução e no desempenho de otimização. Os GAs diferem de outros procedimentos de otimização e pesquisa de algumas maneiras. Primeiro, eles trabalham com uma codificação do conjunto de parâmetros, e não os próprios parâmetros. Portanto, os GAs podem manipular facilmente as variáveis ​​binárias. Em segundo lugar, as GAs procuram de uma população de pontos, não um único ponto. Portanto, os GAs podem fornecer um conjunto de soluções globalmente ótimas. Finalmente, os GAs usam apenas informações de função objetivas, não derivativos ou outros conhecimentos auxiliares. Portanto, as AGs podem lidar com as funções não contínuas e não diferenciáveis ​​que realmente existem em um problema de otimização prática. 4 GATradeTool proposto no GATradeTool. Um algoritmo genético opera em uma população de soluções candidatas codificadas (,). Cada variável de decisão no conjunto de parâmetros é codificada como uma string binária e todas são concatenadas para formar um cromossomo. A representação cromossômica é um vetor de dois elementos contendo parâmetros na codificação genética de bunary. A precisão da representação binária é de oito bits por parâmetro (isto é, 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1). Começa com uma população construída aleatoriamente de suposições iniciais. Esses candidatos de solução são avaliados em termos de nossa função objetiva (Eq. (4)). Para obter a otimização, cada cromossomo troca informações usando operadores (ou seja, cronômetro aritmético 1) emprestado da genética natural para produzir uma solução melhor. A função objetivo (Eq. (4)) é usada para medir como os indivíduos se apresentaram no domínio do problema. No nosso caso, os indivíduos mais adequados terão o maior valor numérico da função objetiva associada. A função de fitness transforma os valores da função objetivo bruta em figuras de mérito não negativas para cada indivíduo. A ferramenta suporta o método de compensação e escala do Goldberg 12 e o algoritmo de classificação linear do Baker 3. Nossa técnica de seleção emprega um mecanismo de roda de roleta para selecionar indivíduos probabilisticamente com base em seu desempenho. Um intervalo de valor real A soma é determinada como a soma dos valores de aptidão da linha em todos os indivíduos da população atual. Os indivíduos são então mapeados um a um em intervalos contíguos no intervalo 0, Soma. O tamanho de cada intervalo individual corresponde ao valor de aptidão do indivíduo associado. Para selecionar um indivíduo, um número aleatório é gerado no intervalo 0, Soma e o indivíduo cujo segmento abrange o número aleatório selecionado. Este processo é repetido até que o número desejado de indivíduos tenha sido selecionado 26. Esses candidatos foram autorizados a participar de um cruzamento aritmético, o procedimento que recombina candidatos promissores para criar a próxima geração. Essas etapas foram repetidas até que um critério bem definido seja satisfeito. Como o GA é um método de pesquisa estocástica, é difícil especificar formalmente os critérios de convergência. Como a aptidão da população pode permanecer estática para várias gerações antes que um indivíduo superior seja encontrado, a aplicação de critérios de término convencionais torna-se problemática. Como resultado, propomos a realização de um número específico de iterações como critério de rescisão. Nosso algoritmo genético pode ser apresentado no quadro a seguir: 5 Resultados empíricos Nesta seção, aplicamos nossa metodologia em um fundo mútuo UBS que investir em mercados de ações emergentes. 2 Os dados analisados ​​consistem em 2800 observações sobre os preços de fechamento diários desse fundo para o período 159825604. O período de otimização é definido entre 1598 e 25603. O sistema otimizado foi avaliado através do período prolongado 2560325604. O problema de otimização é definido para determinar o Comprimentos ótimos do indicador Dimbeta e sua média móvel para o modelo Dimbeta simples que maximizará os lucros. Em primeiro lugar, o efeito de diferentes configurações de parâmetros GA será estudado. Mais especificamente, estamos interessados ​​em medir o efeito do tamanho da população e do parâmetro crossover no desempenho do procedimento de otimização baseado no algoritmo genético. Com base nas recomendações Goldbergs 12 e Bauers 4, o tamanho da população deve ser igual a 30 e a taxa de cruzamento deve ser de 0,6 (valores padrão). O número de iterações foi definido para 300 para todas as simulações. Em segundo lugar, comparamos as soluções de problema de otimização realizadas por diferentes ferramentas de software para medir a validade do GATradeTool proposto. A Tabela 1 fornece os resultados de otimização GA para diferentes tamanhos de populações. A primeira linha da tabela mostra os melhores parâmetros para o indicador Dimbeta e a média móvel de Dimbeta. Para medir o efeito do tamanho da população na melhor solução, examinamos uma série de estatísticas diferentes. A solução com o retorno máximo e mínimo, o retorno médio, o desvio padrão dessas soluções, o tempo necessário para a convergência do algoritmo e um índice de eficiência calculado pela divisão da solução de retorno máximo pelo desvio padrão das soluções. Tabela 1. Efeito do tamanho da população Ao olhar na Tabela 1, podemos dizer que, desde que você aumente o tamanho da população, a melhor e a média das soluções são maiores. No entanto, após um tamanho de população de 30, o desempenho diminuiu. Para levar em consideração os custos computacionais envolvidos desde o aumento do tamanho da população, calculamos o tempo necessário para resolver o problema. O baixo tamanho da população leva ao baixo desempenho e ao baixo tempo de conclusão. De acordo com o índice de eficiência, a melhor solução é a dada pelo tamanho da população 20. Para estabelecer um desempenho básico do algoritmo, realizaram-se 30 ensaios da GA, com uma população aleatória diferente para cada teste. FIG. 1a. Mostra como o desempenho melhorou ao longo do tempo ao traçar a média de aptidão máxima como porcentagem do valor ótimo em relação ao número de geração. Primeiro capturamos o valor máximo de aptidão para cada um dos 30 ensaios, isto é feito para cada geração e cada teste. Em seguida, calculamos a média dos valores máximos de aptidão e dividimos esse número pelo valor ótimo de aptidão, que foi obtido por pesquisa enumerativa (ferramenta FinTrade, 23), o que nos deu a média de aptidão máxima como porcentagem do valor ótimo por geração. FIG. 1a. Configurações do parâmetro base: porcentagem do ótimo. Como pode ser visto na Fig. 1a. A aptidão máxima média da primeira geração é de cerca de 74 do valor ótimo. No entanto, na quinquagésima geração, o algoritmo geralmente encontrou pelo menos uma solução que estava dentro de 90 do valor ótimo. Após a quinquagésima geração, a solução poderia atingir 98 do valor ótimo. Com medidas de desempenho de nossas configurações de base como um ponto de referência, examinamos as possíveis variações no procedimento básico. Estudamos o efeito das mudanças no tamanho da população e na taxa de cruzamento. Para cada configuração de parâmetro diferente, realizamos 30 ensaios do algoritmo e, em seguida, comparamos os gráficos da média de aptidão máxima com os obtidos para a configuração da base. Primeiro, tentamos taxas de cruzamento 0,4 e 0,8. Os resultados são mostrados na figura. 1b e Fig. 1c. Que são semelhantes à Fig. 1a. Como resultado, os parâmetros de cruzamento não afetam a solução ideal para um grau crítico. No entanto, os resultados são diferentes quando alteramos o tamanho da população. De acordo com a Fig. 1d e Fig. 1e. Com um tamanho de população pequeno, tivemos resultados mais pobres do que com uma grande população. Quando selecionamos 80 como tamanho da população, obtivemos altos retornos nas primeiras gerações. FIG. 1b. Crossover 0.40: percentagem do ótimo. FIG. 1c. Crossover 0.80: percentagem do ótimo. FIG. 1d. População 80: porcentagem do ótimo. FIG. 1e. População 20: por cento da ótima. Ao analisar a Tabela 2, você pode comparar os resultados da otimização do nosso sistema comercial usando três ferramentas de software diferentes. A primeira linha dá o resultado para o GATradeTool contra o Metastock e o FinTradeTool 23. Nossa ferramenta de software proposto (GATradeToo l) pode resolver o problema de otimização muito rápido sem quaisquer restrições específicas sobre o número de testes totais. O número máximo de testes que podem ser realizados no software Metastock é de 32 000. O FinTradeTool precisa de muito mais tempo para encontrar a solução ideal. A solução fornecida pelo GATradeTool. Está perto da solução ideal do FinTradeTool. Tabela 2. Comparação de três ferramentas de software diferentes Parâmetros otimizados (Dimbeta. MovAv (DimBeta)) Os sistemas de negociação com os parâmetros ótimos que foram encontrados no período 159825603 foram testados no período de avaliação 2560325604. O desempenho do nosso sistema comercial foi aumentado Em todas as ferramentas de software. No entanto, o custo do tempo deve ser considerado muito serio (coluna 4). FIG. 2 representa a evolução do retorno máximo, mínimo e médio nas 300 gerações para o sistema comercial Dimbeta (tamanho da população 80, taxa de cruzamento 0,6). Pode-se observar que o retorno máximo tem uma tendência positiva. Parece ser relativamente estável após 150 gerações e se move na faixa entre 1,2 e 1 (isto é, retorno 120100). Para o treinamento mínimo, nenhum padrão parece existir. Para o retorno médio da população, uma clara tendência ascendente pode ser encontrada nas primeiras 180 gerações, isso é uma indicação de que a aptidão geral da população melhora ao longo do tempo. Concerning the volatility of the solutions, standard deviation of solutions after an increase in the first generations stabilizes in a range between 0.3 and 0.6 providing evidence of a stable and efficient set of solutions. FIG. 2. Evolution of several statistics over 300 generations. FIG. 3 provides a three dimensional plot of the optimum solutions given by the GATradeTool. In axes and we have the parameters , for the dimbeta indicator and its moving average. Axis 2 shows the return of the Dimbeta trading system for the selected optimum parameters. As can be easily understood our tool provides an area of optimum solutions in contrast with the FinTradeTool that provides only the best solution. FIG. 3. A 3-D plot of the optimum area. 6 Conclusions While technical analysis is widely used as an investment approach among practitioners or academics, they are rarely focused on the issue of parameter optimization. It is not our role to defend technical analysis here, although our results show that there is some predictability in the UBS mutual fund investing in emerging stock markets based on historical data alone. Our main objective in this paper is to illustrate that the new technology of MATLAB can be used in order to implement a genetic algorithm tool that can improve optimization of technical trading systems. Our experimental results show that GATradeTool can improve digital trading by providing quickly a set of near optimum solutions. Concerning the effect of different GA parameter configurations, we found that an increase in population size can improve performance of the system. The parameter of crossover rate does not affect seriously the quality of the solution. By comparing the solutions of the optimization problem conducted by different software tools, we found that the GATradeTool can perform better, by providing very fast a set of optimum solutions that present a consistency throughout the evaluation period. Finally, it would be interesting for further research to test a series of different systems in order to see the correlation between a genetic algorithm and system performances. At a time of frequent changes in financial markets, researchers and traders can easily test their specific systems in GATradeTool by changing only the function that produces the trading signals. Acknowledgements This research paper was part of the postdoctoral research of Dr S. Papadamou that has been funded by IKY Greek State Scholarships Foundation. References 1 F. Allen. R. Karjalainen Using genetic algorithms to find technical trading rules Journal of Financial Economic. Volume 51. 1999. pp. 245271 2 H. L. Allen. M. P. Taylor The use of technical analysis in the foreign exchange market Journal of International Money and Finance. Volume 11. 1992. pp. 303314 3 J. E. Baker, Adaptive selection methods for genetic algorithms, in: Proceedings of the first International Conference on Genetic Algorithms, 1985, pp. 101111 4 R. J. Bauer. G. E. Liepins Genetic algorithms and computerized trading strategies Expert Systems in Finance. D. E. OLeary. P. R. Watkins. 1992. Elsevier Science Publishers, Amsterdam, The Netherlands 5 R. J. Bauer Jr. Genetic Algorithms and Investment Strategies 1994. John Wiley amp Sons, Inc, New York 6 W. Brock. J. Lakonishok. B. LeBaron Simple technical trading rules and the stochastic properties of stock returns Journal of Finance. Volume 47. 1992. pp. 17311764 7 S. Brown. W. Goetzmann. R. Ibbotson. S. Ross Survivorship bias in performance studies Review of Financial Studies. Volume 5. 1992. pp. 553580 8 S. Brown. W. Goetzmann. S. Ross Survival Journal of Finance. Volume 50. 1995. pp. 853873 9 Y. W. Cheung. C. Y.P. Wong The performance of trading rules on four asian currency exchange rates Multinational Finance Journal. Volume 1. 1997. pp. 122 10 K. De Jong, An analysis of the behavior of a class of genetic adaptive systems, Ph. D. Diss. University of Michigan, University Microfilms No. 76-9381, 1975 11 F. Fernndez-Rodrguez, C. Gonzlez-Martel, S. Sosvilla-Rivero, Optimisation of Technical Rules by Genetic Algorithms: Evidence from the Madrid Stock Market, Working Papers 2001-14, FEDEA, 2001. ftp:ftp. fedea. espubPapers2001dt2001-14.pdf 12 D. E. Goldberg Genetic Algorithms in Search, Optimization and Machine Learning 1989. Addison-Wesley 13 J. H. Holland Adaptation in Natural and Artificial System 1975. University of Michigan Press 14 N. Jegadeesh. S. Titman Returns to buying winners and selling losers: Implications for stock market efficiency Journal of Finance. Volume 48. Issue 1. 1993. pp. 6591 15 P. J. Kaufman The New Commodity Trading Systems and Methods 1987. John Wiley amp Sons 16 B. N. Lehmann Fad, martingales, and market efficiency Quarterly Journal of Economics. Volume 105. 1990. pp. 128 17 A. W. Lo. A. C. MacKinlay When are contrarian profits due to stock market overreaction Review of Financial Studies. Volume 3. 1990. pp. 175206 18 S. Mahfoud. G. Mani Financial forecasting using genetic algorithms Journal of Applied Artificial Intelligence. Volume 10. Issue 6. 1996. pp. 543565 19 R. N. Markellos Backtesting trading systems Journal of Computational Intelligence in Finance. Volume 5. Issue 6. 1997. pp. 510 20 L. Menkhoff. M. Schlumberger Persistent profitability of technical analysis on foreign exchange markets BNL Quarterly Review. Volume 193. 1995. pp. 189216 21 C. Neely, P. Weller, R. Ditmar, Is technical analysis in the foreign exchange market profitable A genetic programming approach, in: C. Dunis, B. Rustem, (Eds.), Proceedings, Forecasting Financial Markets: Advances for Exchange Rates, Interest Rates and Asset Management, London, 1997 22 M. Oussaidene. B. Chopard. O. Pictet. M. Tomassini Practical aspects and experiences Parallel genetic programming and its application to trading model induction Journal of Parallel Computing. Volume 23. Issue 8. 1997. pp. 11831198 23 S. Papadamou. G. Stephanides A new matlab-based toolbox for computer aided dynamic technical trading Financial Engineering News. Issue 31. 2003 24 S. Papadamou. S. Tsopoglou Investigating the profitability of technical analysis systems on foreign exchange markets Managerial Finance. Volume 27. Issue 8. 2001. pp. 6378 25 F. M. Werner. D. Bondt. R. Thaler Further evidence on investor overreaction and stock market seasonality Journal of Finance. Volume 42. Issue 3. 1987. pp. 557581 26 D. Whitley, The Genitor algorithm and selection pressure: Why rank-based allocations of reproductive trials are best, in: Proceedings of the Third International Conference on Genetic Algorithms, 1989, pp. 116121 Arithmetic single-point crossover, involves randomly cutting two strings at the same randomly determined string position and then swapping the tail portions. Crossover extends the search for new solutions in far-reaching directions. The structure of this fund and its major position at 2562004 are depicted in the following figure. Copyright 2007 Elsevier Ltd. All rights reserved.

No comments:

Post a Comment