Friday 11 August 2017

Trading Strategy Generation Using Genetic Algorithms


Como usar o aprendizado de máquina em sua máquina de negociação aprendizagem apresenta muitas vantagens únicas e atraentes para os comerciantes à procura de uma vantagem no mercado. Apenas no último ano, vimos uma enorme quantidade de recursos dos principais fundos de hedge do mundo, como a Bridgewater Associates, dedicada a explorar essas técnicas. Embora usando a aprendizagem de máquina ou inteligência artificial parece incrivelmente complexa e difícil de implementar, ainda existem maneiras de alavancar suas capacidades sem precisar de um doutorado em matemática ou ciências. Neste post, vamos passar por 3 maneiras diferentes que você pode usar técnicas de aprendizagem de máquina para melhorar a sua própria negociação. Seleção de Indicadores Uma das decisões mais importantes é decidir quais indicadores usar para o comércio. Se você é um comerciante técnico ou fundamental, ou você apenas usar ação de preço para o comércio, o seu sucesso vai ser em grande parte dependente dos indicadores que você usa e como você interpretá-los. Felizmente, existem muitos métodos diferentes para a seleção de seus indicadores e isso é conhecido como seleção de recursos no mundo máquina-aprendizagem. Usando uma árvore de decisão para selecionar seus indicadores As árvores de decisão são algoritmos muito versáteis que têm o benefício de serem facilmente interpretáveis. Dado um grande conjunto de dados de indicadores e o movimento de preços do ativo, uma árvore de decisão encontrará os indicadores e os valores dos indicadores, que melhor dividem os dados entre aumentos de preços e diminuições de preços. Indicadores mais próximos da parte superior da árvore são vistos como melhores preditores do que aqueles mais próximos ao fundo da árvore, e seguindo um ramo específico permitirá que você facilmente encontrar interdependências e relações entre os indicadores. A árvore de decisão também lhe dará um conjunto de regras que você pode usar para negociar com base nesses indicadores, mas você deve ter certeza de podar corretamente a árvore e testar para overfitting. A árvore de decisão é uma poderosa ferramenta visual que pode ajudá-lo a decidir quais combinações de indicadores para o comércio e quais os valores para negociá-los. Você pode encontrar um tutorial sobre como construir uma estratégia com uma árvore de decisão aqui ou para um guia mais geral, em R aqui é um bom recurso. Otimização Uma vez que você tenha a base para sua estratégia, o próximo passo é a otimização, ou escolher os valores dos parâmetros corretos para maximizar suas chances de sucesso. Muitas estratégias têm uma grande variedade de parâmetros, tais como configurações de indicadores, as condições de entrada e saída, stop loss e tomar níveis de lucro e dimensionamento de posição, que fazem métodos de força bruta de tentar cada combinação única extremamente difícil e demorado, se em tudo Mesmo possível. Resolver esses tipos de problemas é outra área onde a aprendizagem de máquinas se destaca. Otimizando uma Estratégia Usando Algoritmos Genéticos Algoritmos genéticos imitam o processo de seleção natural, criando um conjunto único de estratégias de criança que contém uma mistura das melhores estratégias de pai, com uma chance de mutação aleatória. O processo começa codificando sua estratégia em uma matriz. Por exemplo, poderia ler-se como algo como: Indicador 1 Período Você, então, geraria uma grande população de estratégias com variações aleatórias desses parâmetros. Essas estratégias têm combinações diferentes de períodos médios móveis, condições de entrada e saída e relações risco-recompensa. Em seguida, você testaria essa população executando cada estratégia em um conjunto de testes e selecionando as principais estratégias com base em uma métrica de desempenho de sua escolha. Finalmente, você combina aleatoriamente os traços das estratégias de topo, com uma pequena chance de mutação de alguns dos parâmetros, para criar uma nova geração de estratégias de criança. Você então repete o procedimento de avaliação e mais uma vez acopla as melhores estratégias de desempenho desta nova geração. Isso leva a uma sobrevivência do cenário mais apto onde apenas as estratégias top sobrevivem para passar ao longo de seus genes para a próxima geração Repita este processo um grande número de vezes ou até que um determinado critério de desempenho é atingido e você é deixado com uma estratégia muito robusta construída a partir de Gerações das melhores estratégias de desempenho É necessário ter certeza de que você seleciona uma métrica de desempenho apropriada (como o retorno ajustado ao risco) e sempre testa a estratégia final em relação aos dados que não foram usados ​​para construir a estratégia para garantir que você não esteja sobrecarregando Para um determinado conjunto de dados. Este é um método muito poderoso e robusto que tem sido bem sucedido em uma ampla variedade de aplicações, incluindo o mundo da negociação. Você pode encontrar uma descrição mais detalhada aqui e um tutorial sobre como implementá-lo em R aqui. Live Trading Um dos aspectos mais atraentes da aprendizagem da máquina é ter um algoritmo que é capaz de aprender e adaptar-se às condições do mercado em mudança. No entanto, isso cria uma estratégia de caixa negra que, se você não entender completamente como funcionam os algoritmos e testá-lo você mesmo, é muito difícil confiar em uma conta real. Não saber quando ou por que uma estratégia está entrando em um comércio pode ser uma proposição assustadora. No entanto, existem maneiras de obter os benefícios de uma abordagem inteligente, algorítmica, mantendo a transparência ea compreensão na sua estratégia. Associação Rule Learning Association Rule Aprendizagem é o processo de derivar um conjunto de regras claras e compreensíveis a partir dos padrões descobertos por um algoritmo de aprendizado de máquina. Algoritmos, como o algoritmo Apriori, buscam um conjunto de dados de indicadores, valores de indicadores eo movimento de preço resultante para produzir um conjunto de condições basicamente if-then declarações, que levam aos resultados de maior desempenho. No entanto, ainda é difícil saber exatamente de onde essas regras vêm, o algoritmo Apriori requer um número bastante grande de parâmetros a serem ajustados e este processo não se presta bem a mudanças nas condições de mercado. Com TRAIDE. Levamos o processo um passo adiante e permitimos que você veja os padrões encontrados por um conjunto de algoritmos de aprendizado de máquina, a partir do qual você pode criar suas próprias regras de negociação. Essas regras são, então, fáceis de implementar e ajustadas às condições de mercado em mutação, sem necessidade de qualquer programação ou experiência matemática. Você é capaz de obter os benefícios do uso de algoritmos de aprendizado de máquina para o comércio, mantendo a transparência completa, uma compreensão da sua estratégia e incluindo a sua perícia própria domínio em sua negociação. Usando a aprendizagem de máquina e inteligência artificial para encontrar uma borda no mercado não precisa ser exclusivamente de propriedade de apenas as maiores instituições financeiras. Como esta tecnologia se torna mais acessível e essas técnicas mais comuns, você também pode usar a aprendizagem da máquina para melhorar o seu comércio. SnowCron SnowCron Algoritmo Genético em Sistemas de Negociação FOREX Usando Algoritmo Genético para criar rentável FOREX Estratégia de Negociação. Algoritmo Genético em Cortex Redes Neurais Software Feedforward Backpropagation Neural Network Aplicação para computações genéticas baseado Forex trading. Este exemplo usa conceitos e idéias do artigo anterior, por isso, leia Neural Network Genetic Algorithm em FOREX Trading Systems em primeiro lugar, embora não seja obrigatório. Sobre este texto Em primeiro lugar, leia o aviso de isenção de responsabilidade. Este é um exemplo de usar a funcionalidade de algoritmo genético de Software de Redes Neurais de Cortex, não um exemplo de como fazer negociação rentável. Eu não sou seu guru, nem eu deveria ser responsável por suas perdas. Cortex Neural Networks Software tem redes neurais nele, e FFBP discutimos antes é apenas uma maneira de escolher uma estratégia de negociação forex. É uma boa técnica, poderosa e quando aplicada adequadamente, muito promicing. No entanto, ele tem um problema - para ensinar a Rede Neural. Precisamos saber a saída desejada. É bastante fácil de fazer quando fazemos aproximação de função, apenas tomamos o valor real de uma função, porque sabemos o que deveria ser. Quando fazemos previsão de redes neurais. Nós usamos a técnica (descrita em artigos anteriores) de ensinar a rede neural sobre a história, novamente, se nós prevemos, digamos, uma taxa de câmbio, sabemos (durante o treinamento) qual é a previsão correta. No entanto, quando estamos construindo um sistema de negociação, não temos idéia de qual é a decisão de negociação correta, mesmo se nós conhecemos a taxa de câmbio Como a questão de 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 a saída desejada de nossa rede Neural Se você seguiu nosso artigo anterior, você sabe, que temos traído para lidar com este problema. Nós ensinamos a Rede Neural para fazer previsão de taxa de câmbio (ou taxa de câmbio baseado) e, em seguida, usou essa previsão para fazer negociação. Então, fora da parte da Rede Neural do programa, nós tomamos uma decisão sobre qual Rede Neural é a melhor. Algoritmos genéticos podem lidar com este problema diretamente, eles podem resolver o problema declarado como encontrar os melhores sinais de negociação. Neste artigo vamos usar o Cortex Neural Networks Software para criar tal programa. Usando Algoritmo Genético Algoritmos Genéticos são muito bem desenvolvidos, e muito diversificada. Se você quiser aprender tudo sobre eles, eu sugiro que você use a Wikipedia, como este artigo é apenas sobre o que Cortex Neural Networks Software pode fazer. Tendo Cortex Neural Networks Software. Podemos criar uma Rede Neural que leva alguns dados, digamos, valores de um indicador, e produz alguns sinais de saída, digamos, de negociação (comprar, vender, segurar) e parar a perda / tomar níveis de lucro para posições a serem abertas. Claro, se nós semente desta Rede Neural s pesos ao acaso, os resultados comerciais serão terríveis. No entanto, vamos dizer 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 para a segunda geração, precisamos permitir que nosso vencedor procreate, mas para evitar a obtenção de cópias idênticas, vamos somar alguns ruídos aleatórios para ele s descentants pesos. Na segunda geração, temos o nosso vencedor de primeira geração e é imperfeito (mutado) cópias. Vamos fazer o teste novamente. Teremos outro vencedor, que é melhor do que qualquer outra Rede Neural da geração. E assim por diante. Simplesmente permitimos que os vencedores se reproduzam 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) deve ser como. Rede Neural Algoritmo Genético: Exemplo 0 Este é o primeiro exemplo de algoritmo genético. E um muito simples. Nós vamos percorrê-lo passo a passo, para aprender todos os truques que os seguintes exemplos usarão. O código tem comentários inline, então vamos focar apenas em momentos-chave. Primeiro, criamos uma rede neural. Ele está usando pesos aleatórios, e ainda não foi ensinado. Então, no ciclo, fazemos 14 cópias dele, usando MUTATION NN fumction. Esta função faz uma cópia de uma Rede Neural de origem. Adicionando valores aleatórios de 0 a (em nosso caso) 0,1 para todos os pesos. Nós mantemos as alças para resultar 15 NNs em uma matriz, podemos fazê-lo, como identificador é apenas um número inteiro. A razão pela qual usamos 15 NNs não tem nada a ver com negociação: Cortex Neural Networks Software pode plotar até 15 linhas em um gráfico simultaneamente. Podemos usar diferentes abordagens para o teste. Primeiro, podemos usar o conjunto de aprendizado, tudo de uma só vez. Em segundo lugar, podemos testar, digamos, 12000 restrições (de 100000), e percorrer o conjunto de aprendizado, do começo ao fim. Isso tornará os aprendizes diferentes, pois iremos procurar redes neurais que sejam rentáveis ​​em qualquer dado dado, não apenas no conjunto. A segunda abordagem pode nos dar problemas, se os dados mudam, do começo ao fim. Em seguida, a rede vai evoluir, obtendo a capacidade de comércio no final do conjunto de dados, e perder a capacidade de comércio no seu início. Para resolver esse problema, vamos pegar aleatórios 12000 registros fragmentos de dados, e alimentá-lo para a Rede Neural. É simplesmente um ciclo infinito, já que 100000 ciclos nunca serão alcançados à nossa velocidade. Abaixo adicionamos uma criança para cada rede, com pesos ligeiramente diferentes. Note que 0,1 para mutação tange não é a única escolha, como a matéria de fato, mesmo este parâmetro pode ser otimizado usando algoritmo genético. NNs recém-criados são adicionados depois de 15 existentes. Desta forma, temos 30 NNs em uma matriz, 15 velhos e 15 novos. Então vamos fazer o próximo ciclo de testes, e matar perdedores, de ambas as gerações. Para fazer o teste, aplicamos a Rede Neural aos nossos dados, para produzir saídas e, em seguida, chamamos a função de Teste, que usa essas saídas para simular a negociação. Resultados de negociação são usados ​​para deside, que 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 o usamos é para 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 ao processo de aprendizagem. É possível, que o nosso sistema de comércio funciona muito bem em longos comércios, e muito pobre em curto, ou vice-versa. Se, digamos, longos comércios são MUITO bons, este algoritmo genético pode ganhar, mesmo com grandes perdas em negócios curtos. Para evitá-lo, atribuímos mais peso aos negócios longos em negócios curtos e curtos em ciclos pares. Este é apenas um exemplo, não há garantia, que vai melhorar algo. Mais sobre isso abaixo, em discussão sobre correções. Tecnicamente, você não tem que fazê-lo, ou pode torná-lo de forma diferente. Adicione lucro a uma matriz ordenada. Retorna uma posição de inserção, então usamos essa posição para adicionar identificador de rede neural, aprendendo e testando lucros para matrizes não-classificadas. Agora temos dados para a Rede Neural atual no mesmo índice de array que seu lucro. A idéia é chegar a matriz de NNs, classificados por rentabilidade. Como matriz é classifica por lucro, para remover 1/2 de redes, que são menos rentáveis, só precisamos remover NNs 0 a 14 As decisões de negociação são baseadas no valor do sinal de rede neural, a partir deste ponto de vista o programa é idêntico Exemplos do artigo anterior. Estratégia de negociação FOREX: Discutir o exemplo 0 Primeiro de tudo, vamos dar uma olhada em gráficos. O primeiro gráfico de lucro durante a primeira iteração não é bom em absoluto, como é de se esperar, a Rede Neural perde dinheiro (evolução da imagem 00 gen 0.png copiada após a primeira iteração da pasta de imagens): A imagem para lucro no ciclo 15 é Melhor, às vezes, 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 que o número da curva, digamos, 3 nem sempre é para a mesma Rede Neural. Como eles estão sendo nascidos e terminou o tempo todo: Note também que o pequeno sistema de comércio automatizado forex executa pobre em negociações curtas e muito melhor em longas, o que pode ou não estar relacionado com o fato de que o dólar estava caindo em comparação com Euros durante esse período. Também pode ter algo a ver com os parâmetros do nosso indicador (talvez, precisamos período diferente para shorts) ou a escolha de indicadores. Aqui está a história após 92 e 248 ciclos: Para nossa surpresa, o algoritmo genético falhou completamente. Vamos tentar descobrir por que, e como ajudar a situação. Em primeiro lugar, não é cada geração suposto ser melhor do que o previuos A resposta é não, pelo menos não dentro do modelo que usamos. Se tomarmos o ENTIRE aprendizado conjunto de uma vez, e usado repetidamente para ensinar NNs, então sim, eles irão melhorar em cada geração. Mas em vez disso, pegamos fragmentos aleatórios (12000 registros no tempo), e os usamos. Duas perguntas: por que o sistema falhou em fragmentos aleatórios do conjunto de aprendizagem, e por que haven t nós usamos todo o conjunto de aprendizagem bem. Para responder à segunda pergunta, eu fiz. NNs realizado muito - no conjunto de aprendizagem. E falharam no teste ajustado, pela mesma razão falha quando nós usamos o aprendizado de FFPB. Para colocá-lo de forma diferente, nossos NNs tem overspecialized, eles aprenderam a sobreviver no ambiente que eles estão acostumados, mas não fora dela. Isso acontece muito na natureza. A abordagem que tomamos em vez disso foi destinada a compensar isso, forçando NNs a executar bom em qualquer fragmento aleatório do conjunto de dados, de modo que, esperamos, eles também poderiam executar em um conjunto de testes desconhecidos. Em vez disso, eles falharam nos testes e no conjunto de aprendizado. Imagine animais, vivendo em um deserto. Muito sol, sem neve. Este é um metafor para rizing mercado, como para NNs nossos dados desempenham o papel do ambiente. Os animais aprenderam a viver num deserto. Imagine animais, que vivem em um clima frio. Neve e sem sol. Bem, eles se adaptaram. No entanto, em nosso experimento, colocamos aleatoriamente nossas NNs em um deserto, na neve, na água, nas árvores. Apresentando-os com diferentes fragmentos de dados (aleatoriamente aumentando, caindo, flat.). Animais morreram. Ou, para colocá-lo de forma diferente, nós selecionamos a melhor Rede Neural para o conjunto de dados aleatórios 1, que, digamos, foi para o mercado em ascensão. Então nós apresentamos, para os vencedores e seus filhos, uma queda dos dados do mercado s. NNs executado mal, tomamos o melhor dos artistas pobres, talvez, uma das crianças mutantes, que perdeu a capacidade de comércio no mercado em ascensão, mas tem alguma capacidade de lidar com a queda de um. Então nós giramos a tabela outra vez, e outra vez, nós começamos o mais melhor performer - mas melhor entre executores pobres. Nós simplesmente não damos NNs nossas chances de se tornar universal. Existem técnicas que permitem que o algoritmo genético aprenda novas informações sem perder o desempenho em informações antigas (afinal, os animais podem viver no verão e no inverno, assim a evolução é capaz de lidar com mudanças repetidas). Podemos discutir essas técnicas mais tarde, embora este artigo é mais sobre o uso de Cortex Neural Networks Software. Do que sobre a construção de um sistema de comércio automatizado forex bem sucedido. Algoritmo Genético de Rede Neural: Exemplo 1 Agora é hora de falar sobre correções. Um algoritmo genético simples que criamos durante a etapa anterior tem duas falhas importantes. Primeiro, ele não negociou com lucro. É aprovado, nós podemos tentar usar o sistema parcialmente treinado (era rentável no começo). A segunda falha é mais séria: não temos controle sobre as coisas, que esse sistema faz. Por exemplo, ele pode aprender a ser rentável, mas com enormes drawsdowns. É 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 em nosso sistema automatizado de negociação forex. Isso é quando usamos correções, que não são nada além do conjunto de punições adicionais. Digamos, nosso sistema negocia com drawdown 0.5, enquanto nós queremos confirmá-lo para 0 - 0.3 intervalo. Para dizer ao sistema que cometeu um erro, diminuímos seu lucro (um usado para determinar, qual algoritmo genético ganhou) ao grau, que é proporcional ao tamanho de DD. Então, o algoritmo de evolução cuida do resto. Há poucos fatores mais, que queremos levar em consideração: podemos querer ter mais ou menos igual número de operações de compra e venda, queremos ter mais de operações lucrativas, depois de falhas, podemos querer que o gráfico de lucro Ser linear e assim por diante. Na evolução 01.tsc implementamos um conjunto simples de correções. Em primeiro lugar, usamos um grande número para um valor de correção inicial. Multiplicamo-lo a um pequeno (geralmente, entre 0 e 1) valores, dependendo da punição que queremos aplicar. Então nós multiplicamos nosso lucro a 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 vencedora. Estratégia de negociação FOREX: 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 lucros 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 condições iniciais contraditórias: Há alguma dinâmica positiva tanto no conjunto de aprendizagem e, mais importante, no conjunto de testes. Quanto ao aprendizado, no ciclo 278 podemos ver, que nosso sistema ficou super-treinado. Significa, ainda temos progresso no conjunto de aprendizagem: Mas o conjunto de testes mostra fraqueza: Este é um problema comum com NNs: quando ensiná-lo no conjunto de aprendizagem, aprende a lidar com ele, e às vezes, ele aprende muito bem - para o Grau, quando perde desempenho no conjunto de testes. Para lidar com esse problema, uma solução tradicional é usada: nós continuamos procurando a Rede Neural. Que executa melhor no conjunto de testes e salvá-lo, sobrescrevendo o anterior melhor, 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 SAVE NN, ou exportando pesos de Rede Neural para um arquivo). Desta forma, quando você parar o seu treinamento, você terá o melhor desempenho no teste SET salvo e esperando por você. Note também, que não é o max. Lucro que você está procurando, mas o desempenho ideal, então considere usar correções, ao procurar um melhor desempenho em um conjunto de testes. Algoritmo Genético para FOREX Análise Técnica: Onde agora Depois que você tem o vencedor Rede Neural. Você pode seguir os passos, descritos no artigo anterior, para exportar pesos dessa 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 de usar conjuntos de aprendizagem e teste, e mover a aprendizagem seqüencial. Download Cortex Order Cortex Ver lista de preços A visibilidade é muito importante para este site. Usando Algoritmos Genéticos em Negociação Quantitativa (Este artigo foi publicado pela primeira vez em The R Trader R. e gentilmente contribuiu para R-blogueiros) A pergunta que se deve sempre perguntar-se quando usando indicadores técnicos é o que Seria um critério objetivo para selecionar parâmetros de indicadores (por exemplo, usando um RSI de 14 dias em vez de 15 ou 20 dias). Algoritmos genéticos (GA) são ferramentas bem adaptadas para responder a essa pergunta. Neste post vou mostrar-lhe como configurar o problema em R. Antes de eu proceder o lembrete habitual: O que eu apresento neste post é apenas um exemplo de brinquedo e não um convite para investir. Não é uma estratégia acabada, mas uma idéia de pesquisa que precisa ser mais pesquisada, desenvolvida e adaptada às necessidades individuais. O que são algoritmos genéticos A melhor descrição de GA que eu encontrei vem de Cybernatic Trading um livro de Murray A. Ruggiero. . O processo geral segue as etapas abaixo: Codificar o problema em cromossomos Usando a codificação, desenvolver uma função de aptidão para uso na avaliação de cada cromossomo s valor na resolução de um determinado problema Inicializar uma população de cromossomos Avaliar cada cromossomo na população Criar novos cromossomos por acasalamento Dois cromossomos. Isso é feito por muting e recombinando dois pais para formar duas crianças (os pais são selecionados aleatoriamente, mas tendenciosa pela sua aptidão) Avaliar o novo cromossomo Excluir um membro da população que é menos apto do que o novo cromossomo e inserir o novo cromossomo na população . Se os critérios de parada for atingido (número máximo de gerações, os critérios de aptidão são bons o suficiente), em seguida, retornar o melhor cromossomo ou vá para a etapa 4 De uma perspectiva de negociação GA são muito úteis porque são bons em lidar com problemas altamente não-lineares. No entanto, eles apresentam algumas características desagradáveis ​​que vale a pena mencionar: Over fitting: Este é o principal problema e s baixo para o analista para configurar o problema de uma forma que minimiza esse risco. Tempo de computação. Se o problema não é definido corretamente, pode ser extremamente longo para chegar a uma solução decente ea complexidade aumenta exponencialmente com o número de variáveis. Daí a necessidade de selecionar cuidadosamente os parâmetros. Há vários pacotes de R que tratam de GA, eu escolhi usar o mais comum: rgenoud Os preços de fechamento diários para a maioria de ETFs líquidos de finanças de Yahoo que vão para trás a janeiro 2000. O em período da amostra vai de janeiro 2000 a dezembro 2010. O Fora de Período de amostragem começa em janeiro de 2011. A lógica é a seguinte: a função de aptidão é otimizada durante o período de amostra para obter um conjunto de parâmetros ótimos para os indicadores técnicos selecionados. O desempenho desses indicadores é então avaliado no período fora da amostra. Mas antes disso, os indicadores técnicos precisam ser selecionados. O mercado de ações apresenta duas características principais que são familiares a qualquer pessoa com alguma experiência de negociação. Momento de longo prazo e inversão de curto prazo. Esses recursos podem ser traduzidos em termos de indicadores técnicos por: cruzamento de médias móveis e RSI. Isso representa um conjunto de 4 parâmetros: Períodos de retorno para médias móveis de longo e curto prazo, período de retrocesso para RSI e limiar RSI. Os conjuntos de parâmetros são os cromossomos. O outro elemento-chave é a função fitness. Podemos querer usar algo como: retorno máximo ou Sharpe ratio ou Drawdown média mínima. No que segue, eu escolhi maximizar a relação de Sharpe. A implementação R é um conjunto de 3 funções: fitnessFunction. Define a função de aptidão (por exemplo, a razão máxima de Sharpe) a ser utilizada dentro do sistema de negociação de motores GA. Resumo das estatísticas de negociação para os períodos de entrada e saída dos períodos de amostragem para fins de comparação. O mecanismo GA do pacote rgenoud A função genoud é bastante complexa, mas eu não vou explicar o que significa cada parâmetro como eu quero manter este post curto (ea documentação é realmente bom). Na tabela abaixo, apresentamos para cada instrumento os parâmetros ótimos (RSI, RSI, Média Móvel de Curto Prazo e Média Móvel de Longo Prazo) juntamente com as estatísticas de negociação de entrada e saída da amostra. Antes de comentar os resultados acima, eu quero explicar alguns pontos importantes. Para coincidir com a lógica definida acima, eu limitei os parâmetros para certificar-se de que o período de look-back para a média móvel de longo prazo é sempre maior que a média móvel mais curta. Eu também constrangei o otimizador a escolher apenas as soluções com mais de 50 operações no período de amostra (por exemplo, significância estatística). Em geral, os resultados da amostra estão longe de ser impressionantes. Os retornos são baixos, mesmo se o número de comércios é pequeno para fazer o resultado realmente significativo. No entanto, existe uma perda significativa de eficiência entre o período de entrada e saída do período de amostragem para o Japão (EWJ), o que muito provavelmente significa uma adaptação excessiva. Este post destina-se a dar ao leitor as ferramentas para usar corretamente GA em uma estrutura de negociação quantitativa. Mais uma vez, é apenas um exemplo que precisa ser refinado. A melhoria potencial poucos a explorar seria: função de fitness. Maximizar a proporção de Sharpe é muito simplista. Uma função certamente melhoraria o padrão de estatísticas de negociação de amostra. Nós tentamos capturar um padrão muito direto. Uma pesquisa mais em profundidade padrão é definitivamente necessário. otimização . Há muitas maneiras de melhorar a forma como a otimização é realizada. Isso melhoraria tanto a velocidade de computação quanto a racionalidade dos resultados. O código usado nesta postagem está disponível em um repositório Gist. Como de costume todos os comentários bem-vindos Para deixar um comentário para o autor, por favor, siga o link e comentário no seu blog: The R Trader R. Se você chegou até aqui, por que não se inscrever para atualizações do site Escolha o seu sabor: e-mail. Twitter. RSS. Ou facebook. Comentários estão fechados. Posts populares recentes Artigos mais visitados da semana Patrocinadores Empregos para usuários de R Nunca perca uma atualização Assine os R-blogueiros para receber e-mails com as últimas postagens de R. (Você não verá esta mensagem novamente.)

No comments:

Post a Comment