Negociação quantitativa



Investimentos quantitativos e idéias comerciais, pesquisas e análises.
Sexta-feira, 16 de outubro de 2015.
Um software de algoritmo genético de código aberto (publicação de convidado)
Recentemente eu libertei o Genotick - um software de código aberto que pode criar e gerenciar um grupo de sistemas de negociação. No núcleo do Genotick encontra-se uma epifania: se é possível criar qualquer software com apenas um punhado de instruções de montagem, deve ser possível criar qualquer sistema de negociação com um punhado de instruções simples. Essas instruções simples e sem sentido tornam-se extremamente poderosas quando combinadas. As instruções corretas na ordem correta podem criar qualquer tipo de sistema mecânico: seguimento da tendência, retorno médio ou mesmo com base em dados fundamentais.

estratégias de negociação de algoritmos genéticos
Obter através da App Store Leia esta publicação em nosso aplicativo!
Quão útil é o algoritmo genético para a previsão do mercado financeiro?
Há um grande número de literatura sobre o "sucesso" da aplicação de algoritmos evolutivos em geral, e o algoritmo genético em particular, para os mercados financeiros.
No entanto, sinto-me desconfortável sempre que lê esta literatura. Os algoritmos genéticos podem sobrepor os dados existentes. Com tantas combinações, é fácil elaborar algumas regras que funcionam. Pode não ser robusto e não tem uma explicação consistente de por que essa regra funciona e essas regras não excedem o mero argumento (circular) de que "funciona porque o teste mostra que funciona".
Qual é o consenso atual sobre a aplicação do algoritmo genético em finanças?
Eu trabalhei em um fundo de hedge que permitiu as estratégias derivadas do GA. Por segurança, exigiu que todos os modelos fossem submetidos muito antes da produção para garantir que eles ainda trabalhavam nos backtests. Portanto, pode haver um atraso de até vários meses antes de um modelo ser permitido executar.
Também é útil separar o universo da amostra; use uma metade aleatória dos estoques possíveis para a análise GA e a outra metade para confirmações de confirmação.
Eu acho que o maior problema que os algoritmos genéticos têm é a sobreposição, o viés de bisbilhotar dos dados e que são caixas pretas (não tanto como as Redes Neurais, mas ainda - depende da forma como elas são implementadas).
Eu acho que eles não são muito usados. Eu acho que há alguns fundos de hedge lá fora, que o usam, mas, em geral, eles foram exagerados e depois criticados. (Mas eles ainda são úteis para aceitar um papel ;-)
BTW: Nunca há um consenso real em finanças - todo mundo tenta incomodar todos os outros. É por isso que é tão interessante. (Ou dito de outra forma: é por isso que ainda há compradores e vendedores - um consenso real é um acidente ;-)
Eu apliquei GA em todos os tipos de coisas. Tive algum sucesso no mundo determinista onde realmente existia um padrão e sabia que existia alguma estrutura física (análise sísmica, análise de vibração, inventos, etc.). Depois que encontrei um modelo de GA que se comportou, o trabalho real começou. descobrindo por que se comportou.
Eu também gerei um monte de lixo GA de dados financeiros que "funcionaram" olhando para trás, mas era inútil ansioso.
As técnicas não são o problema das finanças, é a estrutura. E, claro, nunca dados suficientes (dados úteis).
Há muitas pessoas aqui falando sobre como as AGs são empíricas, não têm bases teóricas, são caixas pretas e coisas do gênero. Eu peço desculpa mas não concordo! Há todo um ramo da economia dedicado a olhar os mercados em termos de metáforas evolutivas: Economia evolutiva!
Eu recomendo o livro Dopfer, The Evolutionary Foundations of Economics, como uma introdução. cambridge. org/gb/knowledge/isbn/item1158033?site_locale=pt_PT.
Se a sua visão filosófica é que o mercado é basicamente um casino gigante, ou um jogo, então um GA é simplesmente uma caixa preta e não tem nenhuma base teórica. No entanto, se sua filosofia é que o mercado é uma ecologia de sobrevivência, a GA possui muitos fundamentos teóricos e é perfeitamente razoável discutir coisas como especiação corporativa, ecologias de mercado, genomas de portfólio, climas de negociação e gostar.
Supondo que você evite o viés de espionagem de dados e todas as possíveis armadilhas de usar o passado para prever o futuro, confiar em algoritmos genéticos para encontrar a solução "certa" se resume à mesma aposta que você faz quando gerencia ativamente um portfólio, seja quantitativamente ou discricionária. Se você acredita na eficiência do mercado, o aumento dos custos de transação de gerenciamento ativo é ilógico. Se, no entanto, você acredita que existem estruturas e amp; padrões psicológicos ou "falhas" a serem exploradas e a recompensa vale o tempo e o dinheiro para pesquisar e implementar uma estratégia, a escolha lógica é o gerenciamento ativo.
A execução de uma estratégia derivada da GA é uma aposta implícita contra a eficiência do mercado. Vocês basicamente estão dizendo: "Eu acho que existem algumas avaliações erradas que ocorrem por algum motivo" (massas de pessoas irracionais, fundos mútuos reunidos por incentivos mal alinhados, etc.) e "executar este GA pode classificar essa massa de dados maneira mais rápida do que eu posso ".
Eu não sou um "especialista em quantos" como todos vocês (eu sou apenas um programador), mas aqui está o que encontrei.
1. Se você configurou as restrições corretamente, os resultados são surpreendentes. por exemplo. Você pode obter portfólios que têm retorno muito alto e baixo risco. No entanto, é muito importante ter restrições conflitantes (por exemplo, um pai pode ter muitas crianças, mas o número total de filhos em uma geração não pode passar por um certo número) se você quiser obter bons resultados.
2.) Eu não acho que a GA é uma informação excessiva. Em vez disso, diz: "Tenho muitos genes (estoques) para começar, então vou escolher algumas para começar e, exceto para uma mutação ocasional, vou ficar com essas". Então, ao longo das gerações, descobre como fazer o melhor uso do que começou, criando porfolios ótimos com os estoques de "genes" (a. k.a) que começou com (mais algumas mutações). Tipo de como um construtor no Home Depot. O Home Depot tem muitas ferramentas, mas o construtor apenas escolhe alguns para começar.
IMHO, Algoritmos Genéticos são uma ferramenta incrível para resolver problemas que os cérebros humanos não podem.
Se você testar corretamente seu GA (usando apenas dados passados ​​para gerar a série de tempo do indicador), então você pode confiar no resultado.
Mas eu concordo com vocês que os algoritmos genéticos são puramente empíricos e, portanto, não me sinto muito confortável usando eles.
O falecido Thomas Cover, (provavelmente o líder "Teórico da Informação" de sua geração), considerou abordagens "universais" para coisas como compressão de dados e alocações de portfólio como verdadeiros algoritmos genéticos.
A evolução não tem parâmetros para ajustar ou treinar. Por que os verdadeiros algoritmos genéticos?
As abordagens universais não fazem suposições sobre a distribuição subjacente de dados. Eles não fazem nenhuma tentativa de prever o futuro de padrões ou qualquer outra coisa.
A eficácia "teórica" ​​das abordagens universais (eles apresentam desafios de implementação significativos vêem minha pergunta recente: Geometria para Portfolios Universais?) Sai deles fazendo o que a evolução exige. O mais rápido, o mais inteligente ou o mais forte não necessariamente sobrevive na próxima geração. A evolução favorece esse gene, organismo, meme, portfólio ou algoritmo de compactação de dados posicionado para se adaptar mais facilmente ao que ocorrer a seguir.
Além disso, porque essas abordagens não fazem suposições e operam de forma não paramétrica, pode-se considerar todos os testes, mesmo em todos os dados históricos, como fora da amostra.
Certamente eles têm limitações. Certamente, eles não podem trabalhar para cada tipo de problema que enfrentamos em nosso domínio, mas sim, que maneira interessante de pensar sobre as coisas.
Bem, o objetivo de um algoritmo genético é encontrar a melhor solução sem passar por todos os cenários possíveis porque seria muito longo. Então, é claro, é curva, esse é o objetivo.

SnowCron.
FREE E. Mail Classes.
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 cálculos genéticos baseados em Forex trading.
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.
Em primeiro lugar, leia o aviso legal. Este é um exemplo de usar a funcionalidade do algoritmo de algoritmo de algoritmo de redes nervosas Cortex, não um exemplo de como fazer negociação rentável. Eu não sou seu guru, nem eu devo ser responsável por suas perdas.
O software Cortex Neural Networks possui redes neurais, 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 da função, apenas tomamos o valor "real" de uma função, porque sabemos o que deveria ser.
Quando fazemos a previsão da rede neural, utilizamos 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 comercial, não temos idéia de qual é a decisão de negociação correta, mesmo que conheçamos a taxa de câmbio! Na verdade, temos muitas estratégias de negociação forex que podemos usar em qualquer ponto do tempo, e precisamos encontrar uma boa - como? O que devemos alimentar como o resultado desejado de nossa Rede Neural?
Se você seguiu nosso artigo anterior, você sabe, que nos enganamos para lidar com esse problema. Ensinamos a Rede Neural a fazer uma previsão de taxa de câmbio (ou 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 afirmado como "encontrar os melhores sinais comerciais".
Neste artigo, vamos usar o software Cortex Neural Networks para criar esse programa.
Usando o Algoritmo Genético.
Algoritmos genéticos são muito bem desenvolvidos e muito diversos. Se você quer 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 / tomar níveis de lucro para posições para ser aberto.
Claro, se semearmos os pesos desta Rede Neural ao acaso, os resultados comerciais serão terríveis. No entanto, digamos 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" dos NNs. Para continuar a segunda geração, precisamos permitir que nosso vencedor "procriar", mas para evitar a obtenção de cópias idênticas, vamos adicionar um pouco aleatório aos pesos das descentinas.
Na segunda geração, temos o nosso vencedor da primeira geração e são cópias imperfeitas (mutadas). Vamos fazer testes novamente. Teremos outro vencedor, que é melhor que qualquer outra Rede Neural na geração.
E assim por diante. Nós 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 nenhum conhecimento prévio do que o sistema de negociação (algoritmo genético) deveria ser.
Algoritmo Genético da Rede Neural: Exemplo 0.
Este é o primeiro exemplo de 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, usando MUTATION_NN fumction. 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 NNs 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 resords (de 100000), e caminhar através do conjunto de aprendizagem, do começo ao fim. Isso tornará o know-how diferente, pois buscaremos redes da Neural que sejam lucrativas 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 irá evoluir, obtendo capacidade de trocar no final do conjunto de dados e perdendo a capacidade de trocar no seu início.
Para resolver esse problema, vamos levar aleatoriamente 12.000 fragmentos de registros de dados e alimentá-lo para a Rede Neural.
Abaixo, adicionamos uma criança para cada rede, com pesos ligeiramente diferentes. Note-se que 0,1 para mutação tange 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 a 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, sugerir que podemos melhorar o resultado, se implicarmos algumas limitações à aprendizagem processo.
É 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 aos 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 identificador 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 metade das redes, que são menos lucrativas, precisamos apenas remover NNs de 0 a 14.
As decisões de negociação são baseadas no valor do sinal da Rede Neural, desde este ponto de vista o programa é idêntico aos exemplos do artigo anterior.
FOREX Estratégia de Negociação: Discussing example 0.
Em primeiro lugar, vamos dar uma olhada nos 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 evolution_00_gen_0.png copiada após a primeira iteração da pasta "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, pois eles estão nascendo e terminaram o tempo todo:
Além disso, note que o pequeno sistema de negociação automatizado forex é pobre em transações curtas e muito melhor em longos, que pode ou não estar relacionado ao fato de que o dólar estava caindo em comparação com o euro durante esse período. Também pode ter algo a ver com parâmetros do nosso indicador (talvez, precisamos de um período diferente para shorts) 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. Vamos tentar 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 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 conjunto de aprendizado completo? Bem. Para responder a segunda pergunta, eu fiz. NNs apresentaram um grande desempenho - 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 foi destinada a compensar isso, ao obrigar NNs a realizar bons 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 de 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, plano). 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 aumento do mercado. Então, apresentamos, aos vencedores e seus filhos, uma queda dos dados do mercado. NNs funcionaram mal, 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 alguma habilidade para lidar com a queda de um.
Em seguida, 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 grandes falhas. Primeiro, não conseguiu negociar com lucro. Está tudo bem, podemos tentar usar o sistema parcialmente treinado (foi lucrativo no início). A segunda falha é mais grave: não temos controle sobre as coisas, que esse sistema faz. Por exemplo, pode aprender a ser rentável, 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?
É quando usamos as 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) ao 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 de operações de compra e venda mais ou menos igual, queremos ter mais operações rentáveis, então de falhas, podemos querer que o gráfico de lucro ser linear e assim por diante.
Em evolution_01.tsc implementamos um conjunto simples de correções. Em primeiro lugar, usamos algum número grande para um valor de correção inicial. Multiplicamos isso para valores pequenos (geralmente, entre 0 e 1), 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 há um problema em nossa abordagem. No entanto, o sistema encontrou um equilíbrio entre algumas das condições iniciais contraditórias:
Existem 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 NNs: quando ensinamos isso no aprendizado definido, ele aprende a lidar com isso e, às vezes, ele aprende muito bem - até o 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, substituindo 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 ligando para SAVE_NN 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 FOREX: Onde agora?
Depois de ter sua Rede Neural de vencedor, você pode seguir as etapas, descritas no artigo anterior, para exportar pesos da Rede Neural e depois 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.

Usando Algoritmos Genéticos para Previsão de Mercados Financeiros.
Burton sugeriu em seu livro "A Random Walk Down Wall Street" (1973) que "um macaco com os olhos vendados jogando dardos nas páginas financeiras de um jornal pode selecionar um portfólio que faria tão bem como um selecionado cuidadosamente por especialistas". Embora a evolução tenha tornado o homem mais inteligente na escolha de estoques, a teoria de Charles Darwin é bastante eficaz quando aplicada de forma mais direta. (Para ajudá-lo a escolher ações, verifique como escolher um estoque.)
Quais são os algoritmos genéticos?
Nos mercados financeiros, os algoritmos genéticos são mais comumente usados ​​para encontrar os melhores valores combinados de parâmetros em uma regra de negociação, e eles podem ser incorporados em modelos ANN projetados para escolher ações e identificar negócios. Vários estudos demonstraram que esses métodos podem se tornar efetivos, incluindo "Algoritmos Genéticos: Gênesis de Avaliação de Estoque" (2004) por Rama e "As Aplicações de Algoritmos Genéticos na Otimização de Mineração de Dados de Mercado de Valores" (2004) por Lin, Cao, Wang , Zhang. (Para saber mais sobre ANN, veja Redes Neurais: Previsão de Lucros.)
Como os algoritmos genéticos funcionam.
Por exemplo, uma regra de negociação pode envolver o uso de parâmetros como Moving Average Convergence-Divergence (MACD), Exponential Moving Average (EMA) e Stochastics. Um algoritmo genético então entraria os valores nesses parâmetros com o objetivo de maximizar o lucro líquido. Ao longo do tempo, pequenas mudanças são introduzidas e aqueles que fazem um desejável impacto são mantidos para a próxima geração.
Existem três tipos de operações genéticas que podem ser realizadas:
Os cruzamentos representam a reprodução e o cruzamento biológico visto na biologia, pelo qual uma criança assume certas características de seus pais. As mutações representam a mutação biológica e são usadas para manter a diversidade genética de uma geração de uma população para outra, introduzindo pequenas mudanças aleatórias. As seleções são o estágio em que os genomas individuais são escolhidos de uma população para reprodução posterior (recombinação ou crossover).
Esses três operadores são então usados ​​em um processo de cinco etapas:
Inicialize uma população aleatória, onde cada cromossomo é n-comprimento, sendo n o número de parâmetros. Ou seja, um número aleatório de parâmetros são estabelecidos com n elementos cada. Selecione os cromossomos, ou parâmetros, que aumentam os resultados desejáveis ​​(presumivelmente lucro líquido). Aplicar operadores de mutação ou crossover aos pais selecionados e gerar uma prole. Recombine a prole e a população atual para formar uma nova população com o operador de seleção. Repita as etapas duas a quatro.
Ao longo do tempo, esse processo resultará em cromossomos (ou, parâmetros) cada vez mais favoráveis ​​para uso em uma regra de negociação. O processo é encerrado quando um critério de parada é cumprido, o que pode incluir tempo de execução, aptidão, número de gerações ou outros critérios. (Para mais informações sobre MACD, leia Trading The MACD Divergence.)
Usando Algoritmos Genéticos na Negociação.
Ao usar essas aplicações, os comerciantes podem definir um conjunto de parâmetros que são então otimizados usando um algoritmo genético e um conjunto de dados históricos. Algumas aplicações podem otimizar quais parâmetros são usados ​​e os valores para eles, enquanto outros são focados principalmente em simplesmente otimizar os valores para um determinado conjunto de parâmetros. (Para saber mais sobre essas estratégias derivadas do programa, consulte O Poder de Negociações de Programas.)
Principais dicas e truques de otimização.
A escolha de parâmetros é uma parte importante do processo, e os comerciantes devem procurar parâmetros que se correlacionem com as mudanças no preço de uma determinada segurança. Por exemplo, experimente diferentes indicadores e veja se algum parece se correlacionar com as principais voltas do mercado.

Comments

Popular posts from this blog

A Autoridade Monetária Confiável do Mundo

Aktulnní cena ropy na burze

Forex Trading para iniciantes