Desenvolvendo Estratégias de Negociação com Programação Genética - Parâmetros e Operadores de GP.
A programação genética no seu núcleo usa um conjunto de operadores (seleção, mutação, crossover, elitismo, etc.) e parâmetros (número de gerações, tamanho da população, etc.). Como há uma vasta literatura sobre este assunto, vou pular o básico e assumir que o leitor já esteja familiarizado com o tópico.
A primeira coisa a entender sobre os parâmetros e as operadoras de GP é que eles constituem essencialmente um sistema complexo. As mudanças em um parâmetro podem ou não afetar a forma como outros parâmetros se comportam. Pequenas mudanças em um parâmetro podem levar a mudanças não lineares em todo o resultado evolutivo. Outra vez, uma grande mudança nos parametros pode não alterar o resultado geral. Um bom exemplo é definir o tamanho da população. Os iniciantes expostos recentemente ao GP geralmente pensam que quanto maior o tamanho da população, melhor. Afinal, quanto mais pessoas em uma população, maior será a chance geral de um bom resultado de pesquisa, certo? Muito errado. Muitas vezes, um tamanho de população pequeno (mas não tão pequeno!) É realmente preferível a um maior. Há uma compensação entre ter mais indivíduos em uma população e aumentar o nível geral de ruído. Ter mais indivíduos por população diminui a chance de que um indivíduo único e relativamente adequado possa criar filhos. Assim, o nível de ruído é aumentado. Alguns sistemas de software GP comercialmente disponíveis são anunciados para poder processar milhares de pessoas em um curto espaço de tempo. Da minha experiência, se você precisa de mais do que, digamos, 500 indivíduos por população, você provavelmente está fazendo algo errado. Então, vamos dar uma olhada em alguns parâmetros e operadores.
Tamanho da população.
Eu já mencionei o tamanho da população. Tente começar com uma pequena população de talvez 100 pessoas. Isso também diminuirá o tempo de computação. Como dito acima, o aumento do tamanho da população não conduzirá necessariamente a melhores resultados devido ao aumento do nível de ruído.
Número de gerações.
Se o seu algoritmo GP funcionar, você observará que, nos estágios iniciais do processo evolutivo, os indivíduos aptos podem ser encontrados de forma relativamente fácil, embora às vezes algumas gerações possam passar sem qualquer melhora antes que ocorra outra grande melhoria. Após várias gerações, as melhorias ocorrem com menos frequência. Tente começar com apenas 10 a 15 gerações. Se houver apenas uma melhora marginal da primeira para a última geração, provavelmente você está fazendo algo errado. Também é útil introduzir um contador de gerações de paradas e parar o processo evolutivo se, após um certo número de gerações, não foram observadas melhorias adicionais.
Número de árvores de decisão e tamanho da árvore.
Já escrevi sobre como codificar árvores de decisão. Mais uma vez há uma compensação. Quanto mais complicadas forem suas decisões gerais sobre a profundidade / tamanho da árvore e o número de subárvores usadas, maior será a chance de superação. As regras de decisão menos complexas são quase sempre preferíveis, mas provavelmente ainda terá sentido usar árvores de decisão dedicadas para regras longas e curtas. Vou me concentrar no assunto de punir a complexidade por meio da pressão da parcimônia em um artigo posterior.
Algoritmo de programação genética.
Embora o algoritmo básico de GP seja relativamente simples, existem várias alternativas, como, por exemplo, Programação genética linear, programação genética cartesiana, algoritmo genético de triagem não dominado (NSGA), Algoritmo evolutivo Pareto de força (SPEA) e muitos outros. A escolha de uma alternativa específica muitas vezes tem implicações sobre como os indivíduos são codificados, sobre a função de fitness e também sobre a implementação dos operadores de seleção, mutação e crossover. Tradicionalmente, o operador de mutação, crossover e elitismo é usado exclusivamente mutuamente e não em combinação. Ou seja, um desses operadores é selecionado por uma estratégia de seleção do operador, e somente esse operador é aplicado. Por exemplo, duas crianças produzidas como descendentes não estão sujeitas a mutação, embora isso seja possível.
Um operador de seleção é uma estratégia de como selecionar um ou vários indivíduos de um pool para um propósito específico, como mutação ou cruzamento. Existem muitas estratégias de seleção e isso realmente depende do contexto que se deve usar de preferência. Cada estratégia de seleção depende de um determinado critério para comparar indivíduos. Na maioria dos casos, o melhor (em termos de aptidão) individual é desejado, mas às vezes também pode ser o pior indivíduo. No caso de funções de aptidão multi-objetivos, o processo de seleção pode tornar-se bastante complicado. Muitas vezes, um operador de seleção deve selecionar dois indivíduos e, no entanto, garantir que não selecione o mesmo indivíduo duas vezes. Selecionar apenas os melhores indivíduos para reprodução não é sábio, pois isso pode levar a uma convergência prematura para um ótimo local em vez de global no espaço de busca. É necessária uma abordagem equilibrada que dê aos indivíduos melhores uma chance maior de serem selecionados para reprodução enquanto ainda continuam a selecionar pessoas mais fracas. Isso manterá uma mistura entre a pressão de sobrevivência e deixando espaço para que novas soluções apareçam e sejam exploradas.
Existem vários métodos de seleção, mas provavelmente a estratégia de seleção mais popular é a seleção do torneio. A seleção do torneio é um processo de duas etapas. Em primeiro lugar, alguns (por exemplo, 7) indivíduos são selecionados aleatoriamente - o "torneio". Em segundo lugar, um ou dois indivíduos são selecionados do torneio de acordo com sua condição física. Um tamanho de torneio maior dá aos indivíduos mais fracos uma chance geral menor de serem selecionados.
Às vezes, pode ser uma boa idéia simplesmente permitir que os melhores um ou dois indivíduos em uma população sejam copiados para a próxima geração, porque, de outra forma, eles podem estar perdidos. O problema com o elitismo é geralmente que, sem outras medidas tomadas, as gerações posteriores podem ser preenchidas com muitas cópias de indivíduos idênticos. Comparar indivíduos por igualdade pode, no entanto, ser uma operação dispendiosa em termos computacionais. Eu pessoalmente prefiro não usar o elitismo por esse motivo.
A mutação deve ocorrer apenas com baixa probabilidade, e. em 0% - 2% dos casos. Algumas implementações de GP variam a probabilidade de mutações durante o processo evolutivo. Para as diferentes versões de mutação (por exemplo, mutação pontual ou mutação de subárvore), consulte uma das muitas fontes de literatura sobre o assunto. Esteja ciente de que a mutação deve cumprir a tipificação de nós em uma árvore de decisão.
Crossover é o operador GP com maior probabilidade (por exemplo, 80% - 100%) para ser escolhido para produzir descendentes. O uso de nós digitados garante que somente criadores válidos e significativos são criados pelo operador de crossover. Um problema é que, durante o processo evolutivo, esse operador tem uma tendência a aumentar o tamanho médio das árvores de decisão e, portanto, levar ao bloqueio do código. Muitas vezes, os indivíduos mais aptos são aqueles que realmente superam as séries históricas. Eles também são aqueles com as maiores regras de decisão. O operador de seleção escolhe-os com a maior probabilidade, e, portanto, o operador de cruzamento posteriormente produz filhos aumentou o tamanho da árvore de decisão. A contramedida apropriada é a pressão da parcimônia, que eu escreverei em uma postagem posterior.
O problema de evoluir indivíduos estruturalmente semelhantes.
Um problema comum é que o processo evolutivo muitas vezes tem tendência a evoluir muitas estratégias de negociação quase idênticas ao longo do tempo. A população é preenchida com alguns "tipos básicos" de indivíduos que são estruturalmente muito semelhantes uns aos outros e, portanto, têm valores de fitness muito semelhantes. Para obter a imagem, imagine a mesma estratégia de negociação para múltiplos indivíduos, mas cada uma com uma alteração muito pequena em um único parâmetro. Há diferentes razões pelas quais esse fenômeno ocorre. Uma é que a evolução da aptidão do melhor indivíduo da população é descontínua. Se houver um & quot; salto & quot; significativo & quot; na melhor forma física de uma geração para a próxima, as chances são altas de que o melhor indivíduo fique o mais apto para as próximas gerações - até que outro tal salto ocorra. Isto é igualmente verdadeiro para o segundo e terceiro melhores indivíduos da população. Portanto, por várias gerações seguidas, os poucos indivíduos mais aptos terão as maiores chances de criar descendentes e, naturalmente, a prole será estruturalmente semelhante aos seus pais. Como efeito, cada vez mais indivíduos estruturalmente similares preencherão as primeiras posições na população, efetivamente reduzindo a variedade genética em toda a população.
Muitas vezes, é bastante difícil encontrar uma solução satisfatória para esse problema. Uma possibilidade é manter o parâmetro de mutação em um nível alto. Outra solução é introduzir parâmetros adaptativos de GP, por exemplo, variando a mutação e / ou as probabilidades de cruzamento ao longo do processo evolutivo. Ou faça alterações dinâmicas aos operadores de seleção. Infelizmente, essas alternativas muitas vezes não são muito eficazes e podem ser bastante difíceis de implementar ou calibrar corretamente. Uma solução computacionalmente muito cara é comparar as estratégias de negociação para cada geração e não permitir que a população contenha indivíduos estruturalmente iguais. Isso requer uma comparação de cada indivíduo entre si ao construir a população da próxima geração, o que retardará o processo evolutivo em grande medida.
Curiosamente, da minha experiência, esse problema é significativamente reduzido ao mudar de um único objetivo para um poderoso processo multi-objetivo de função de fitness / evolução, como o algoritmo genético de triagem não dominado (NSGA) e os algoritmos de algoritmo evolutivo de força pareto (SPEA) . Esses algoritmos definem, inerentemente, uma abordagem diferente na seleção de indivíduos para reprodução, o que reduz a variedade desejada no gene poole muito menos do que as funções de aptidão de objetivo único. Vou escrever mais sobre esses dois algoritmos em um artigo posterior.
Estratégias de negociação em evolução com programação genética - Funções de fitness.
No centro de toda estratégia de programação genética (GP) está a função fitness. A função de fitness especifica o que todo o processo evolutivo está procurando. Cada indivíduo recebe um valor de aptidão, que é calculado pela função de fitness. Indivíduos com um alto valor de aptidão têm uma chance maior de serem selecionados para reprodução e assim criar filhos. Encontrar um "bom" A função de fitness é um dos aspectos de design mais importantes do processo de desenvolvimento. Raramente é o caso de a primeira idéia de uma função de fitness já produzir excelentes resultados, e a definição de um exige uma compreensão bastante profunda do domínio do problema. A lista a seguir contém algumas decisões de design necessárias:
Minimizar versus maximizar os valores de aptidão Objetivo único versus multi-objetivo Normalização de valores de aptidão Atribuição de pesos a componentes individuais da função de fitness.
Vamos dar uma olhada em cada decisão necessária.
Maximização vs. minimização.
As funções de fitness podem, naturalmente, maximizar certas medidas-alvo ou podem minimizá-las. As medidas de alvo típicas para maximizar podem ser o retorno total, o valor esperado, o tamanho médio das negociações vencedoras ou a taxa de sucesso. As medidas típicas do objetivo para minimizar poderiam ser o máximo de redução, o número máximo de negociações perdidas consecutivas ou a volatilidade da curva de ações. Uma situação comum é maximizar alguns e minimizar outros valores físicos ao mesmo tempo.
Objetivo único versus multi-objetivo.
Uma função de fitness com um único objetivo tenta maximizar (ou minimizar) um único valor de aptidão. Esse valor de aptidão pode ser o resultado de uma fórmula matemática combinando vários componentes individuais, por exemplo.
Na função de adequação da amostra acima, embora possível, seria uma má idéia usar valores negativos para a medida máxima de levantamento (argumentando que um rebaixamento pode ser interpretado como um retorno negativo), pois isso seria bastante confuso.
Neste artigo, continuarei a referir-me a tais "funções combinadas de fitness" como único objetivo, porque o valor final da aptidão é um valor único. Em contraste, as funções de aptidão multi-objetivos não tentam agregar múltiplas medidas de alvo em um único valor de aptidão, mas diretamente no espaço de busca multidimensional sem reduzir o número de dimensões. As funções de fitness multi-objetivos para GP podem ser bastante complicadas de implementar, mas, da minha experiência, elas podem realmente levar a resultados superiores em comparação com as de um único objetivo. Eu já mencionei duas dessas funções de fitness em um artigo anterior: o algoritmo genético de triagem não dominado (NSGA) e o algoritmo evolutivo pareto de força (SPEA), ambos dos quais considero muito poderoso. Esses algoritmos realmente operam diretamente em uma paisagem de fitness multidimensional & quot; sem reduzir a paisagem num "raio de número de aptidão" unidimensional como combinam funções de aptidão de um único objetivo. O leitor também deve estar ciente de que ambos os algoritmos pelo seu projeto predetermem os operadores de seleção de GP e mutação. As implementações de trabalho para ambos os algoritmos podem ser encontradas na biblioteca ECJ.
Normalização de valores de aptidão.
Às vezes é necessário normalizar valores de aptidão para um intervalo predeterminado. Isso pode, por exemplo, ser o caso, se existirem poucos exatos que estejam muito distantes dos outros valores físicos. Se um operador de seleção proporcional de fitness for aplicado, esses outliers podem facilmente dominar todos os outros, o que raramente é desejado. Uma alternativa seria usar valores de fitness baseados em rank, uma vez que não sofrem com esse problema.
Outro problema é a diferença relativa nos tamanhos dos componentes de valor de aptidão envolvidos. Considere a seguinte função de fitness:
Por estes motivos (especialmente quando se usa uma função de aptidão combinada de um único objetivo), a normalização dos componentes individuais é geralmente necessária. Existem três alternativas diferentes:
Se todos os componentes na função de fitness puderem ter distribuições similares (ou seja, média e desvio padrão), então uma normalização pode não ser necessária. No entanto, isso raramente é o caso. Os outliers são de fato um fenômeno comum.
2. Normalização de componentes de valor físico com distâncias proporcionadas.
O melhor componente de valor de fitness recebe um valor predefinido de 1.0, o pior 0.0. Todos os outros componentes do valor de fitness estão em distância proporcional entre os dois. (Koza preferiu uma ordem inversa com o melhor componente de valor físico recebendo o valor 0.0 e o pior 1.0. A tarefa correspondente é, então, minimizar esse componente em vez de maximizá-lo.) Este procedimento ainda é problemático se existirem outliers, mas às vezes - dependendo de uma escolha de operadores de seleção - pode ser desejado preservar as distâncias relativas entre valores.
3. Normalização dos componentes do valor da aptidão, ordenando primeiro todos os componentes de acordo com sua classificação.
Como no procedimento prévio, o melhor componente de valor físico recebe um valor de 1,0 e o pior 0,0 (ou vice-versa). Todos os outros estão em igual distância entre si de acordo com sua classificação. Ao contrário do último procedimento, este também resolve o problema dos outliers. No entanto, as informações relevantes relativas às distâncias relativas entre os componentes do valor da aptidão são perdidas de forma irrevogável.
Armadilhas comuns.
Da minha experiência há algumas armadilhas comuns para iniciantes no que se refere ao design de funções de fitness. Um iniciante típico provavelmente tentará aplicar uma função de aptidão de objetivo único e tentar maximizar o retorno total. Isso é facilmente compreensível. Afinal, em última análise, é a quantidade de dinheiro que sua estratégia de negociação gerou, não é? Na medida em que esta abordagem raramente leva a bons resultados. Embora a lógica aplicada seja válida, existem todos os tipos de problemas não resolvidos com a maximização do retorno total. Aqui estão alguns pontos a considerar:
A estratégia depende de muito poucos negócios.
Em um mercado de preços crescentes, muitas vezes é difícil vencer o mercado e gerar alfa real. Uma estratégia de compra e retenção tem a vantagem de ter custos comerciais muito baixos. Portanto, nesta situação, não é incomum que a estratégia de negociação com o melhor desempenho seja simplesmente comprar no início e manter até o final. As melhores estratégias de negociação evoluídas, em conformidade, provavelmente não terão poucos negócios - o que é conseqüente, mas ainda não é desejável. Essas estratégias de negociação não representam uma maneira repetitiva de sucesso. Eles basicamente apenas executam, evitando os custos de negociação. Esteja ciente de que tais estratégias de negociação preguiçosas e quot; também pode implicar uma maior volatilidade do que você está preparado para aceitar. Isso é porque eles simplesmente repetem a evolução dos preços de mercado devido a suas táticas de compra e retenção.
Por esta razão, pode ser interessante experimentar uma versão melhorada da função de adequação que corrige o número de negociações, por exemplo, a soma ou produto do retorno total normalizado e o número total normalizado de negócios. Adicionando pesos a cada componente de fitness também pode ser de interesse.
A estratégia depende de poucos negócios vencedores.
Um problema relacionado é evoluir estratégias que dependem fortemente de alguns negócios vencedores muito selecionados em comparação com muitos negócios perdidos. Teoricamente, esta é uma estratégia sólida, desde que o valor global esperado ainda seja positivo (veja mais abaixo). No entanto, é preciso ter muito cuidado. Se as negociações vencedoras são muito poucas, a estratégia poderá novamente não representar uma maneira repetitiva de sucesso. Em outras palavras, a distribuição dos negócios vencedores versus perdedores também é importante. Se você faltasse o Dow Jones Industrial Average (DJIA) antes da Black Monday de 19 de outubro de 1987, você poderia ter feito uma fortuna. (O DJIA caiu 22,61% apenas nesse dia.) Se você tem apenas um único comércio como este na sua estratégia de backtest, isso ainda pode constituir anos de pequenas perdas. Mas como um movimento dessa magnitude ocorre estatisticamente, muito raramente você não pode confiar nele estrategicamente. (No entanto, você deve estar preparado para que isso ocorra à desvantagem, caso contrário, tal perda poderia efetivamente eliminá-lo.) Lembre-se de que, com a crescente freqüência na ocorrência de falhas no flash, esse problema aumentou do que diminuído.
Os outliers dominam a seleção proporcional ao fitness.
Outro problema é a existência de outliers. Acontece com frequência que alguns indivíduos são muito superiores a todos os outros indivíduos na geração que tendem a dominar todos os outros, embora não representem um ótimo global, mas apenas um local. No caso de serem utilizados operadores de seleção proporcionais de fitness em vez de operadores de seleção baseados em rank, os outliers têm chances muito maiores de serem selecionados para reprodução. Repetição do processo evolutivo com a mesma semente aleatória (assumindo um aplicativo de um único segmento sem condições de tempo de execução), é claro, apenas repita o resultado, portanto recomenda-se o re-funcionamento com sementes aleatórias variadas.
Isso pode acontecer tanto com funções de adequação simples como multi-objetivo. Às vezes, em funções de fitness multi-objetivos, a habilidade de um indivíduo pode estar localizada na "fronteira". da paisagem de fitness, com, por exemplo, um componente de fitness sendo o máximo de todos os valores e o outro sendo zero. Muitas vezes, é útil traçar a distribuição relativa dos valores físicos para obter uma impressão.
Medidas de fitness sugeridas.
Esta é uma lista de medidas físicas que, pessoalmente, considero que vale a pena experimentar em combinação. I provavelmente começará com uma função de aptidão de objetivo único, maximizando apenas o valor esperado. Mais tarde, uma vez que a função de fitness multi-objetivo está no lugar, eu também adicionar outros componentes de fitness.
Maximizar o valor esperado (EV): A fórmula é EV = Média de Ganhos * p Ganhos - Perdas Médias * p Perdas, com Ganhos Médios (Perdas) sendo o retorno médio de um negócio vencedor (perdedor), e p Ganhar (p Perda) o probabilidade de um comércio vencedor (perdedor). Claro que o relacionamento p Win = 1.0 - p Loss deve ser mantido. O valor esperado deve ser um número positivo - se não for, então o sistema certamente perderá dinheiro no longo prazo! Considero que esta é a medida mais direta e intuitiva para maximizar para cada sistema de comércio. (Para negociações de soma zero, ou seja, negociações que não geram nem perdem dinheiro, eu considero-as como perdedores, no entanto, como há quase sempre uma "opção de juros livres de risco" à qual o dinheiro poderia ter sido atribuído .)
Minimizar a redução máxima: ninguém gosta de perder dinheiro nos mercados. Um problema comum é saber quando desligar uma estratégia de negociação porque, supostamente, não funciona mais. Negociar é, portanto, sempre um jogo psicológico. Você realmente confia na sua estratégia? Ter grandes perdas pode explodir sua conta e levar a chamadas de margem no pior momento possível.
Maximize o número de negócios: este é um complicado que os iniciantes podem não chegar facilmente. Todo comércio tem suas taxas. Às vezes, GP pode atribuir funções de fitness muito altas a estratégias de negociação com apenas muito poucos (mas todos os ganhos) comércios. Tais estratégias são artefatos baseados em comportamentos aleatórios, pois não representam sucesso comercial significativo e reprodutível. Maximizar o número de negócios em combinação com o valor talvez esperado é uma contra-medida contra esse problema. No entanto, esta medida pode ser problemática, pois dá preferência a muitas tradições de curto prazo. Ao usar esta medida de adequação, é, portanto, imperativo considerar as taxas de negociação e, possivelmente, a derrapagem.
Maximizar o retorno total: Apesar de muito simples e intuitivo, maximizar o retorno total é muitas vezes apenas uma boa ideia em combinação com outras medidas de fitness.
Gerando estratégias de negociação baseadas em mudanças direcionais com programação genética.
Jeremie Gypteau Fernando E. B. Otero Michael Kampouridis Autor de e-mail.
A maioria das ferramentas de previsão usa uma escala de tempo físico para estudar as flutuações de preços dos mercados financeiros, tornando o fluxo de tempo físico descontínuo. Portanto, usar uma escala de tempo física pode expor as empresas a riscos, devido à ignorância de algumas atividades significativas. Neste artigo, uma abordagem alternativa e inovadora é explorada para capturar atividades importantes no mercado. A idéia principal é usar uma escala de tempo intrínseca com base em Mudanças Direcionais. Combinada com a Programação Genética, a abordagem proposta visa encontrar uma estratégia de negociação ideal para prever os movimentos futuros de preço de um mercado financeiro. Para avaliar sua eficiência e robustez como ferramenta de previsão, realizou-se uma série de experimentos, onde obtivemos informações valiosas sobre o desempenho de previsão. Os resultados dos experimentos indicam que esse novo framework é capaz de gerar novas e lucrativas estratégias de negociação.
Referências.
Informações sobre direitos autorais.
Autores e afiliações.
Jeremie Gypteau 1 Fernando E. B. Otero 1 Michael Kampouridis 1 Email autor 1. Escola de Informática da Universidade de Kent Canterbury Reino Unido.
Sobre este artigo.
Recomendações personalizadas.
Cite o papel.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Download instantâneo legível em todos os dispositivos Possuí-lo para sempre Imposto de venda local incluído, se aplicável.
Cite o papel.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Mais de 10 milhões de documentos científicos ao seu alcance.
Switch Edition.
&cópia de; 2017 Springer International Publishing AG. Parte de Springer Nature.
Estratégias de negociação programação genética
Pretestando a Eficácia da Programação Genética.
por Michael R. Bryant.
Uma das questões que se colocam ao usar a programação genética (GP) para desenvolver estratégias de negociação é se o processo de GP é inerentemente capaz de construir estratégias que não são excessivas para o mercado. Quando milhares de estratégias de negociação são construídas e testadas pelo algoritmo de GP, é sensato perguntar se os resultados fora da amostra são significativos ou apenas uma conseqüência de chance aleatória. É o "infinito teorema do macaco": se você deixar um macaco acertar aleatoriamente as teclas de uma máquina de escrever, com tempo suficiente, ele comporá as obras de Shakespeare. Então, como sabemos que os resultados comerciais do GP não são macarrão macaco?
Felizmente, as estatísticas fornecem uma resposta; em particular, testes nulos estatísticos. No contexto do GP, estes foram chamados de pré-teste. 1 Basicamente, queremos comparar os resultados do processo de GP com um conjunto equivalente de estratégias de negociação geradas aleatoriamente. Se as estratégias geradas pelo GP são significativamente melhores do que as estratégias geradas aleatoriamente, isso sugere que o processo de GP pode ter mérito.
Fazendo as perguntas certas.
Ao criar uma estratégia de negociação para um determinado mercado, há sempre a possibilidade de que os dados sobre os quais as estratégias são construídas, conhecidos como dados de amostra ou de treinamento, não contenham informações relevantes para os dados não vistos, conhecidos como fora da amostra. ou testes de dados. Por outras palavras, pode não existir um padrão explorável ou outra informação no período da amostra que permita generalizar os resultados para o período fora da amostra. Por exemplo, o mercado pode ser muito eficiente para explorar, ou os períodos de amostra e fora da amostra podem ser fundamentalmente distintos devido a uma escolha infeliz na divisão dos dados. Se for esse o caso, qualquer teste fora de amostra bem sucedido será meramente uma conseqüência de chance aleatória.
Mesmo que haja potencial em um determinado mercado, precisamos saber se o processo de GP pode efetivamente explorá-lo. Pode ser que as entradas escolhidas para o processo GP sejam ineficazes ou que os indicadores necessários ou outros elementos necessários para explorar os dados do mercado não estão disponíveis.
Com isso em mente, o objetivo do pré-teste é responder a essas duas questões-chave sobre o uso de GP no desenvolvimento de estratégias comerciais: (1) O segmento de dados na amostra contém informações que permitem que as estratégias de negociação sejam generalizadas para o out - de dados de amostra, e (2) O processo de GP pode efetivamente utilizar essa informação? Ambas as questões devem ser respondidas de forma afirmativa para que o processo de GP seja útil como uma abordagem de desenvolvimento da estratégia comercial.
Um pré-teste eficaz.
O pré-teste que usaremos para responder às duas perguntas acima é bastante direto. Ele tira proveito do fato de que o processo GP começa com uma população de estratégias de negociação geradas aleatoriamente. Essa população inicial é criada sem qualquer consideração sobre como as estratégias geradas serão realizadas nos dados na amostra ou fora da amostra, o que torna improvável que as estratégias sejam exageradas para os dados do mercado. As únicas restrições na criação das estratégias são que (1) eles devem seguir as regras semânticas da construção da estratégia, e (2) utilizam as configurações (indicadores, tipos de pedidos, etc.) escolhidos pelo usuário.
As regras semânticas da construção da estratégia garantem que as estratégias façam sentido básico. Por exemplo, eles evitam que a hora do dia seja comparada a uma média móvel dos preços de fechamento e garantem que os osciladores estocásticos sejam comparados com valores na faixa de 0 a 100 ou a outros osciladores na mesma faixa. No entanto, eles não tentam criar estratégias que tenham sentido comercial intuitivo, como comprar breakouts após uma tendência descendente de curto prazo dentro de uma tendência ascendente de longo prazo. Isso venceria o objetivo do processo de GP, que é projetado para descobrir regras desse tipo se eles fornecem algum benefício para o desempenho na amostra.
Dado que a população inicial é gerada aleatoriamente, seu desempenho nos segmentos na amostra e fora da amostra será igualmente aleatório. Em particular, podemos esperar que algumas estratégias sejam lucrativas e algumas não lucrativas. Na maioria dos casos, o desempenho médio da população inicial não será lucrativo.
Depois que a população inicial evoluir ao longo de várias gerações do processo de GP, esperamos que os resultados fora da amostra melhorem se o processo de GP estiver funcionando de forma eficaz. Embora alguns membros das populações (ou seja, estratégias) possam ser lucrativos e alguns não lucrativos, em geral, o desempenho médio fora da amostra deve melhorar. Nosso pré-teste, então, será comparar o desempenho médio fora da amostra da população evoluída com o desempenho médio fora da amostra da população inicial.
Duas métricas serão examinadas: o lucro líquido médio fora da amostra e o lucro líquido fora da amostra da estratégia classificou-se mais alto de acordo com a aptidão física. A aptidão é calculada com base no desempenho na amostra e é o principal motor do processo evolutivo. Nenhum dado fora da amostra é usado no cálculo da aptidão física ou em qualquer outro aspecto do processo de compilação, exceto pela opção de reposição da população com base no desempenho fora da amostra, que não será usado neste estudo.
Para calcular o desempenho médio fora da amostra da população evoluída, apenas as estratégias únicas serão contadas. Algumas estratégias duplicadas são inevitáveis durante o processo de construção, e quanto mais gerações forem empregadas, mais duplicatas tendem a surgir. Para evitar a contagem dupla de resultados positivos ou negativos e, assim, influenciar os resultados, as duplicatas serão detectadas com base no desempenho. Se todas as métricas de desempenho (além do número de entradas, listadas como "complexidade") são respectivamente as mesmas (dentro da precisão numérica entre si) para duas estratégias, as duas estratégias serão consideradas idênticas. Este método define duplicatas semanticamente, em vez de sintaticamente (com base no código da estratégia). Por exemplo, duas estratégias que possuem diferenças de código que não afetam os resultados serão consideradas duplicatas. O tamanho da população inicial, gerada aleatoriamente, foi configurado para corresponder ao número de estratégias únicas na população evoluída.
As comparações entre as populações evoluídas e as geradas aleatoriamente foram feitas usando um teste t de Student, e todos os testes foram feitos usando o software Adaptrade Builder.
Casos de Teste e Resultados.
Foram executados quatro casos de teste, conforme mostrado na tabela abaixo.
2 Tipos de pedidos restritos a entradas e saídas de limite (preenchidos somente quando o preço excedeu) e o gerenciamento de dinheiro de tamanho fixo pára entre US $ 12,50 e US $ 175 em tamanho; entrada apenas entre as 8:30 e as 10:00 (hora de troca); sair depois das 15:00; maximizar o lucro líquido, número de trades e significado (peso igual), com uma pequena ponderação para a complexidade; e apenas média móvel, maior, menor, padrões de preço, cruzamentos acima / abaixo e valor absoluto no conjunto de construção do indicador.
Em cada caso, o tamanho da população era de 100, e cinco gerações foram executadas. Os dados foram divididos 75/25 entre a amostra e fora da amostra. A compilação foi repetida 25 vezes para cada mercado, com o lucro líquido médio fora da amostra sobre a população final e o lucro líquido fora da amostra para o membro da população mais apta registrado após cada julgamento. Os mesmos resultados foram então registrados em 25 populações iniciais (geradas aleatoriamente), onde o tamanho da população foi ajustado para corresponder ao número de estratégias únicas na população evoluída, como explicado acima. Para determinar se o lucro líquido das populações evoluídas foi maior do que o lucro líquido das populações iniciais, as médias foram comparadas usando um teste t de Student de uma união, não remunerado, conforme calculado no Excel.
O tamanho da população foi mantido pequeno para acelerar o processo de construção. A small number of generations was used in order to ensure adequate variation in the final population. The markets and settings were chosen to illustrate the idea that how well the GP process works depends on such factors. For example, daily bars of the E-mini S&P were chosen because experience has shown that it is fairly easy to find good strategies for this market. Strategies on 1 min bars of the E-mini S&P are much more difficult to generate. The second test with 1 min bars of the E-mini was designed to find strategies with more, shorter trades -- more of a "scalping" strategy -- with a restricted set of indicators in the build set. The forex market was included for variety.
The results are shown below for the average population net profit. In all cases, the average out-of-sample (OOS) net profit across the evolved populations was significantly higher than the average OOS net profit of the randomly generated populations, suggesting that the GP process was effective in evolving strategies that improved upon random results. The fact that the average population net profit was not positive in three of the four cases is discussed in the next section.
3 Average value plus/minus one standard deviation; N = 25 in all cases.
The results for the fittest population member are shown below. In the first two cases, the OOS net profit of the fittest member is greater than that of the average net profit, as can seen by comparing the results in the two tables. This is consistent with the prior results in that it suggests a positive relationship between the fitness, which is calculated on the in-sample data, and the OOS net profit. In all cases except for the third one, the OOS net profit of the fittest member is greater in the evolved population than in the randomly generated population, which is also consistent with the prior results, although due to the high standard deviation, the results are not statistically significant.
The table also shows the percentage of runs where the fittest member had a positive net profit out-of-sample. In three of the four cases, there were more runs where this occurred for the evolved population than was the case for the random populations. For example, for the second test case, in 44% of the evolved populations, the fittest member was profitable OOS, whereas the fittest member was profitable OOS in only 28% of the randomly generated populations.
The results that indicate a potential problem with the GP process are highlighted below in red. The third test case has the most problems. Here, the average OOS net profit of the fittest member in the evolved population was less than the average OOS net profit of the evolved population. This suggests that the fitness was not a good indication of future performance, which contradicts the fact that the OOS net profit significantly improved during the build process. Moreover, the average OOS net profit of the fittest member in test case three was actually lower than the average OOS net profit of the fittest member among the random populations. Lastly, there were fewer builds where the OOS net profit of the fittest member was profitable for the evolved populations than in the random populations. All of these results suggest that, although the build process improved upon the initial population, it would be difficult to use the results to choose a good strategy going forward.
4 Average value plus/minus one standard deviation; N = 25 in all cases.
What it All Means.
The pretest was designed to determine whether or not the GP process was capable of finding and exploiting information in the in-sample period that could be generalized to the out-of-sample (OOS) period. The good news is that in all four test cases, the pretest results suggest that this is in fact the case. The average OOS net profit of the evolved populations was significantly higher than the average OOS net profit of the randomly generated populations in each case.
The bad news is that just because the GP process improves upon the initial population, as measured by the OOS net profit, doesn't mean the resulting strategies are tradable or even profitable. It's just difficult to find good strategies for some markets, as evidenced by the average results for 1 minute bars of the E-mini S&P and 30 minute bars of the EURUSD. In these cases, not only was the average net profit negative, but so was the net profit of the fittest member. However, at least for the first two test cases, the trends were in the right direction. The fact that the average net profit for the fittest member was greater than the average net profit suggests a positive correlation between in-sample and OOS results, which, in turn, suggests it makes sense to choose the strategy based on how well it does historically. Even though the second case didn't produce profitable OOS results based on the fittest member, given that the trends are good, it might be possible to use a larger population with more generations to achieve better results.
The third test case, as discussed in the prior section, presents a counter-example. In this case, although the GP process significantly improved the average OOS net profit, the lack of correlation between the fitness and the OOS net profit suggests the historical results would not be a good guide in selecting a member of the evolved population for trading forward. However, the fact that the GP process was successful in improving the OOS results overall begs the question: why is the fitness not a good indication of OOS performance if the build process, which is based on fitness, was generally successful? The answer may be that the fittest member of the population may be too fit. In other words, while the population overall improved during the generations of GP, the fittest member may have been over-fit to the in-sample data. By being over-fit, it no longer generalized well to the unseen (OOS) data.
This is supported by the fact that in the random populations, the fittest strategy was always better OOS than the average strategy, which suggests a positive correlation between fitness and OOS performance among the randomly generated strategies. Assuming the in-sample data contains information that can be exploited and generalized to the OOS period, which has already been demonstrated, this is what would be expected when the strategies are not over-fit, which is most likely the case for the randomly generated populations. Recall that the third test case differs from the second one, which was not over-fit, only in terms of the settings, not in the market data. This suggests that if the strategies are being over-fit, it may only be necessary to change the settings and try again.
The quality of the results for the fourth test case (EURUSD) lies somewhere between that of the first and third test cases. Because the average OOS net profit of the fittest member was not better than the average OOS net profit, it's possible that the fittest member is over-fit.
The value of performing a pretest prior to performing a full GP is that it provides some indication of how likely it is that the intended effort will not be wasted. While you could always forge ahead and verify everything with real-time tracking or a separate set of out-of-sample data, without knowing whether or not the GP process is inherently well suited to the market and settings, it may take much longer to infer that the process is not working correctly.
Chen, Shu-Heng and Navet, Nicolas, Failure of Genetic-Programming Induced Trading Strategies: Distinquishing between Efficient Markets and Inefficient Algorithms, Springer Verlag, New York, 2007.
*This article appeared in the April 2012 issue of the Adaptrade Software newsletter.
OS RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES INERENTES. A PARTIR DE UM REGISTRO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. TAMBÉM, DESDE QUE OS NEGÓCIOS NÃO SEJAM REALMENTE EXECUTOS, OS RESULTADOS PODEM TENER SOB OU COMENTÁRIOS COMPLEMENTARES PARA O IMPACTO, SE HAVER, DE CERTOS FATORES DE MERCADO, TAL COMO FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL TAMBÉM ESTÃO SUJEITOS AO FATO DE QUE ELES FORAM CONCEBIDOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ FAZENDO QUE QUALQUER CONTA VÁ OU SEJA PROBABILITÁVEL PARA ALCANÇAR LUCROS OU PERDAS SIMILARES ÀOS MOSTRADOS.
Se você quiser ser informado de novos desenvolvimentos, novidades e ofertas especiais do Adaptrade Software, por favor, junte-se à nossa lista de e-mail. Obrigado.
Copyright © 2004-2015 Adaptrade Software. Todos os direitos reservados.
Developing High Performing Trading Strategies with Genetic Programming.
Um dos aspectos frustrantes da pesquisa e do desenvolvimento de sistemas de negociação é que nunca há tempo suficiente para investigar todas as idéias comerciais interessantes que alguém gostaria de explorar. No início da década de 1970, quando um sistema de cruzamento médio móvel era considerado estado da arte, era relativamente fácil desenvolver estratégias lucrativas usando indicadores técnicos simples. Indeed, research has shown that the profitability of simple trading rules persisted in foreign exchange and other markets for a period of decades. But, coincident with the advent of the PC in the late 1980’s, such simple strategies began to fail. The widespread availability of data, analytical tools and computing power has, arguably, contributed to the increased efficiency of financial markets and complicated the search for profitable trading ideas. Estamos agora em um estágio em que é possível levar uma equipe de 5-6 pesquisadores / desenvolvedores, usando técnicas avançadas de pesquisa e tecnologias de computação, desde 12 a 18 meses e centenas de milhares de dólares, para desenvolver uma estratégia de protótipo. And there is no guarantee that the end result will produce the required investment returns.
The lengthening lead times and rising cost and risk of strategy research has obliged trading firms to explore possibilities for accelerating the R&D process. One such approach is Genetic Programming.
Early Experiences with Genetic Programming.
I first came across the GP approach to investment strategy in the late 1990s, when I began to work with Haftan Eckholdt, then head of neuroscience at Yeshiva University in New York. Haftan had proposed creating trading strategies by applying the kind of techniques widely used to analyze voluminous and highly complex data sets in genetic research. I was extremely skeptical of the idea and spent the next 18 months kicking the tires very hard indeed, of behalf of an interested investor. Although Haftan’s results seemed promising, I was fairly sure that they were the product of random chance and set about devising tests that would demonstrate that.
One of the challenges I devised was to create data sets in which real and synthetic stock series were mixed together and given to the system evaluate. To the human eye (or analyst’s spreadsheet), the synthetic series were indistinguishable from the real thing. But, in fact, I had “planted” some patterns within the processes of the synthetic stocks that made them perform differently from their real-life counterparts. Some of the patterns I created were quite simple, such as introducing a drift component. But other patterns were more nuanced, for example, using a fractal Brownian motion generator to induce long memory in the stock volatility process.
It was when I saw the system detect and exploit the patterns buried deep within the synthetic series to create sensible, profitable strategies that I began to pay attention. A short time thereafter Haftan and I joined forces to create what became the Proteom Fund.
That Proteom succeeded at all was a testament not only to Haftan’s ingenuity as a researcher, but also to his abilities as a programmer and technician. Processing such large volumes of data was a tremendous challenge at that time and required a cluster of 50 cpu’s networked together and maintained with a fair amount of patch cable and glue. We housed the cluster in a rat-infested warehouse in Brooklyn that had a very pleasant view of Manhattan, but no a/c. O calor tirado do cluster foi imenso, e quando combinado com música de rap muito alta explodiu pelas paredes pelos estúdios de música vizinhos, o efeito era debilitante. As you might imagine, meetings with investors were a highly unpredictable experience. Fortunately, Haftan’s intellect was matched by his immense reserves of fortitude and patience and we were able to attract investments from several leading institutional investors.
The Genetic Programming Approach to Building Trading Models.
Genetic programming is an evolutionary-based algorithmic methodology which can be used in a very general way to identify patterns or rules within data structures. The GP system is given a set of instructions (typically simple operators like addition and subtraction), some data observations and a fitness function to assess how well the system is able to combine the functions and data to achieve a specified goal.
In the trading strategy context the data observations might include not only price data, but also price volatility, moving averages and a variety of other technical indicators. The fitness function could be something as simple as net profit, but might represent alternative measures of profitability or risk, with factors such as PL per trade, win rate, or maximum drawdown. In order to reduce the danger of over-fitting, it is customary to limit the types of functions that the system can use to simple operators (+,-,/,*), exponents, and trig functions. The length of the program might also be constrained in terms of the maximum permitted lines of code.
Podemos representar o que está acontecendo usando um gráfico de árvore:
In this example the GP system is combining several simple operators with the Sin and Cos trig functions to create a signal comprising an expression in two variables, X and Y, which may be, for example, stock prices, moving averages, or technical indicators of momentum or mean reversion.
O aspecto "evolutivo" do processo de GP deriva da idéia de que um sinal ou modelo existente pode ser mutado substituindo os nós em um ramo de uma árvore, ou mesmo um ramo inteiro por outro. System performance is re-evaluated using the fitness function and the most profitable mutations are retained for further generation.
The resulting models are often highly non-linear and can be very general in form.
The last fifteen years has seen tremendous advances in the field of genetic programming, in terms of the theory as well as practice. Using a single hyper-threaded CPU, it is now possible for a GP system to generate signals at a far faster rate than was possible on Proteom’s cluster of 50 networked CPUs. Um pesquisador pode desenvolver e avaliar dezenas de milhões de possíveis algoritmos de negociação com o espaço de poucas horas. Implementing a thoroughly researched and tested strategy is now feasible in a matter of weeks. There can be no doubt of GP’s potential to produce dramatic reductions in R&D lead times and costs. But does it work?
To address that question I have summarized below the performance results from a GP-developed daytrading system that trades nine different futures markets: Crude Oil (CL), Euro (EC), E-Mini (ES), Gold (GC), Heating Oil (HO), Coffee (KC), Natural gas (NG), Ten Year Notes (TY) and Bonds (US). The system trades a single contract in each market individually, going long and short several times a day. Only the most liquid period in each market is traded, which typically coincides with the open-outcry session, with any open positions being exited at the end of the session using market orders. Com exceção dos mercados NG e HO, que são inseridos usando ordens stop, todos os mercados são inseridos e saiu usando ordens padrão de limite, a preços determinados pelo sistema.
The system was constructed using 15-minute bar data from Jan 2006 to Dec 2011 and tested out-of-sample of data from Jan 2012 to May 2014. The in-sample span of data was chosen to cover periods of extreme market stress, as well as less volatile market conditions. A lengthy out-of-sample period, almost half the span of the in-sample period, was chosen in order to evaluate the robustness of the system.
Out-of-sample testing was “double-blind”, meaning that the data was not used in the construction of the models, nor was out-of-sample performance evaluated by the system before any model was selected.
Os resultados de desempenho são líquidos de comissões de negociação de US $ 6 por rodada e, no caso de HO e NG, derrapagem adicional de 2 carrapatos por turno redondo.
(click on the table for a higher definition view)
The most striking feature of the strategy is the high rate of risk-adjusted returns, as measured by the Sharpe ratio, which exceeds 5 in both in-sample and out-of-sample periods. This consistency is a reflection of the fact that, while net returns fall from an annual average of over 29% in sample to around 20% in the period from 2012, so, too, does the strategy volatility decline from 5.35% to 3.86% in the respective periods. The reduction in risk in the out-of-sample period is also reflected in lower Value-at-Risk and Drawdown levels.
Um declínio na média PL por comércio de US $ 25 para US $ 16 em compensação em algum grau por um ligeiro aumento na taxa de negociação, de 42 para 44 negócios por dia, em média, enquanto a taxa diária de vitoria e as negociações lucrativas em percentagem permanecem consistentes ao redor 65% e 56%, respectivamente.
Overall, the system appears to be not only highly profitable, but also extremely robust. Isso é impressionante, uma vez que os modelos não foram atualizados com dados após 2011, permanecendo estático durante um período de quase metade, desde que o período de dados utilizado na sua construção. It is reasonable to expect that out-of-sample performance might be improved by allowing the models to be updated with more recent data.
Benefits and Risks of the GP Approach to Trading System Development.
Os benefícios potenciais da abordagem de GP para o desenvolvimento do sistema de negociação incluem velocidade de desenvolvimento, flexibilidade de design, generalidade de aplicação em mercados e testes rápidos e implantação.
E sobre a desvantagem? The most obvious concern is the risk of over-fitting. By allowing the system to develop and test millions of models, there is a distinct risk that the resulting systems may be too closely conditioned on the in-sample data, and will fail to maintain performance when faced with new market conditions. That is why, of course, we retain a substantial span of out-of-sample data, in order to evaluate the robustness of the trading system. Mesmo assim, dada a enorme quantidade de modelos avaliados, continua a existir um risco significativo de sobreposição.
Another drawback is that, due to the nature of the modelling process, it can be very difficult to understand, or explain to potential investors, the “market hypothesis” underpinning any specific model. “We tested it and it works” is not a particularly enlightening explanation for investors, who are accustomed to being presented with a more articulate theoretical framework, or investment thesis. Not being able to explain precisely how a system makes money is troubling enough in good times; but in bad times, during an extended drawdown, investors are likely to become agitated very quickly indeed if no explanation is forthcoming. Unfortunately, evaluating the question of whether a period of poor performance is temporary, or the result of a breakdown in the model, can be a complicated process.
Finally, in comparison with other modeling techniques, GP models suffer from an inability to easily update the model parameters based on new data as it become available. Normalmente, como modelo GP será reconstruído a partir do zero, muitas vezes produzindo resultados muito diferentes a cada vez.
Despite the many limitations of the GP approach, the advantages in terms of the speed and cost of researching and developing original trading signals and strategies have become increasingly compelling.
Given the several well-documented successes of the GP approach in fields as diverse as genetics and physics, I think an appropriate position to take with respect to applications within financial market research would be one of cautious optimism.
QUANTLABS.
Quant Resources for Traders.
Quant development: Using genetic programming to create trading strategies.
Quant development: Using genetic programming to create trading strategies.
We have over the last 4 years developed an automated system to create trading strategies using GP technology. The software is integrated in CUDA, so we can process data quickly using the latest graphics cards. However, we have not managed to get good results in live trading. Curve fitting is a huge problem that we have worked on for the last 2 years. A couple of weeks ago I decided to fire all my programmers, because our ideas ran out. Is there anyone out there that have any thoughts on GP and curve fitting? In theory I am convinced that GP technology is the way to go, but I simply can’t find the right setup. Você tem alguma ideia?
tradingsystemlab has had success with genetic programming. they have two of the top systems on futurestruth. Mike Barna is affiliated with it and has a good reputation. There may be a tip or two on their site to help. on a side note, they charge something absurd like 60k a year for their product.
indicators are fairly useless, so maybe try to add in some time of day patterns, highs and lows, and some of the non price based streams – tick index, breadth, vix, put call ratios, etc.
I agree with Murray Ruggiero that you should provide some guidance to the strategy. Personally, what i would like to do is point to a few different points on a chart that look similar, then have the algorithm go through a list of conditions (patterns, indicator thresholds, etc) to say what parameters were held in common on those bars, and create a strategy automatically. here you’d be providing guidance. if you”d like to talk about this, then definitely reach out.
you had me nodding in agreement with the comments on genetic programming until you said “indicators are fairly useless.” I think that misses the point about technical indicators. Sure, if you use them as trading rules, you’ll be disappointed, but technical indicators are really just transformations of market data. Most are designed to provide a smoothed or normalized version of the market. It’s what you do with them that matters. Saying that indicators are useless is like saying a statistical average is a worthless function. Like any mathematical transformation, indicators can be useful or useless, depending on what you do with them.
I have been writing auto trading systems for about 8 years. During that time, I have written around 40 systems that are profitable from time to time. Most of them don’t work all the time, but they all work some of the time.
The major determining factor for swing trading systems is the average movement of the market – up, down, or sideways.
For short-term (day-trading) systems, volatility is one of the keys.
As for number of parameters, my systems usually have only 2-3 input parameters. I even have a system with no input parameters at all (it’s hard-coded).
I use TradeStation and Easy Language.
I have some experience in using GP in trading. I developed a software by myself to do it and I did it in 1 month. I’m testing some strategies now in paper trading till the end of the year. before going live.
I traded in the past futures in a discretionary fashion. Where are you located at?
CUDA or not CUDA I think a good GP program can reach a good TS in about 1000 or less individuals tested at least for hourly data. Remember that the more you test the more your results are biased. (there is still some advantage anyway)
The part of GP it is only 20% of the work! after you find out the systems you have to assess it with proper tests. then you have some idea on how they can perform in the future.
I can say something about my experience and my opinion.
To have a benchmark try to use miniSP data hourly data 1999-2009. try to run it and then tell me what you found (al least sharpe ratio, profit/max drawdown)just to see what the program can find with respect to another one(the one i developed). I tested also other programs available on the net. more or less the results are there. if you want we can go private to discuss it. sharpe ratio should be >4. profit/max drawdown>6. I’m quite curious about the details and what genetic operations you used and what entry exit modes you used.
I can say that going on shorter time frames it’s very difficult the problem execution is though. 64 indicators is a very high number I have about 10 of them.
one though problem for me is data snooping! I know too well the data now. and once you have used out of sample data once, all what comeslater on after is data snooping.
about considering a posteriori the results and interpreting the results it’s a dangerous path. consider the case in which you find a TS performing good by pure lack and this has a good interpretation…you have a lucky TS with a meaning. bu it’s always a lucky TS. I would prefer to interpret the result on a very short period or another market to find an idea and then test it as a simple one.
Let’s change your problem only slightly. Let’s say that all the data series you used in your tests were randomly generated. And that you applied all or any combination of any indicators, functions or optimized parameters on these price series. All your programs would work, they would find in the data presented to them: patterns, trends and oscillators of all kinds. And would provide you with the best “trading solution” to consider going forward. I presume, from the above, that you have reached the same conclusion I did when reading on your research efforts.
The very premise of what you attempted is on shaky foundations; it implicitly states that what ever the price gyrations of the past, they will be the same in the future. So it comes as no surprise that you missed the mark. I even expect that your trading methods had a hard time beating the Buy & Hold strategy.
Go back to the basic. Start by asking questions related to the future price variations and what you would expect to extract from them. You can use past price data as a guideline to what the future may bring; but you probably won’t be able to use “the perfect set of parameters detected on the past data”. Every price series has its own signature and going forward will evolve and generate a new unique signature.
In my own research, I first designed the mathematical foundation on which to build my trading systems; this took a few years. It is only after having proven to myself that the trading methods I intended to use had a strong mathematical framework that I started simulating the implementation phase of these trading methods. It is still a work in progress.
there are better tool to “create” new trading rules as grammatical evolution. I have seen a lot of trading system but nothing works better than GE to find new rules (of course they have some modification from pure GE system).
“You digged your own grave when you mentionned this very bad assumption of yours …”
Quote=”In theory I am convinced that GP technology is the way to go, but I simply can’t find the right setup. Do you have any ideas?”
GP technology is a trendy thing that won’t still solve the problem of massive logic requested of algo trading. So in a first place you are totally wrong in choice of technology, as you already stated you are running a very intensive logic request method throughout algorythm, which require intensive CPU usage not GPU.
I am not anyone that should advise around unknown people, but it is quite funny, to notice that , not knowing anything about technology or at least the pro & con, you jumped into a conclusion and didn’t get ride of it.
Just so you know, with a correct network of CPU , you will outmatch any dumb gpu grid.
That’s why FPGA are on their own league when it concern real time algorythm.
Question: Why did you select GP as an approach? I mean it has utility is some very specific domains but it is an open question if the markets are one of them.
As an alternative that does work very well I’d suggest a predictive model using neural networks or SVM.
This is my some what same answer to one of the discussion.
Though I am new on this topic so please tell me if I am wrong.
First thing according to me is if you move forward using Technical analysis (TA) for analyzing markets/stocks then one should be clear about the vary definition of it . TA is a study of stock trends using historical data (using graphs) which in turn represents the mass (Human psychology) , so TA is 60% art and 40 % science . Thus the outcome of any analysis based on the study of that 40 % (science) cannot make the outcome of 85 % which is treated as one of the bast trading strategics in stocks trading.
The second is that there are many trading tools (trading Indicators) available in softwares but nun of then gives complete picture stock movement alone thus one have to apply many of them to get a probable movement of stock movement.
Third and the last one according to me if you analysis simple chart with simple tools it give very clear probable movement of stocks , so why to put lot of effort and money in something which is not 100 %
fourth it is important to develop a trading strategics without it you are solder in a war without weapons . but in stocks trading the most important thing according to me is the STOPLOSS , if entry in stocks and moving out of your trade or both of them you need to find where shell be my STOPLOSS (over here stploss meas stoploss (minimum risk to be taken to enter a trade )and even stoploss for securing your profit once you enter the trade)
The problem everyone is experiencing is you are trying to predict the future with historical data. The only way to predict the future is with future data. This is how the ‘real’ Wall Street makes money. Nobody bets millions of dollars if they aren’t sure they are going to win. Sad but true, guys like us can only use the standard tools of the trade, get to know individual stocks and markets intimately, and then follow the big boys when they make a more. I have a friend who went to school with a guy who now works on Wall street. They met up for a class reunion. He told him to invest in BAC. I looked at the chart. It was clearly in a down trend that no rational trader would ever go long on. I told him he was crazy. He went long and netted a great profit and got out exactly when this guy told him to (a month earlier he had this info) and the stock resumed it’s down trend. I am still developing trade algos myself, based on the tried and true standard indicators, and the trick, I have found is to understand the speed and volatility of the market to fine tune the algos based on those variables applied to standard indicators. I use a combination of RSI to get overbought or oversold general markets and MACD histograms to determine the the direction of the daily market to enter trades in individual equities that are following the general market.
What kind of results are you getting from your TA (RSI, MACD) system?
I researched TAs as model inputs some years ago, found them useless over the long term and went on to other modalities.
•Same here. Nowatzke told in some other groups and myself in private through chat inspired our team and there’s no turning back using any of the indicators. The fancier the indies, the more meaningless they are. However, as we bias toward not using any indy, we’re in the mood to listen to success stories of whom using it, just try to prove ourselves wrong. Because it’s wrong to be believe in anything to be always right. (We’re currently ranked the highest verified real money automatic trading system on FxStat. Just Google fxstat t0009. You’ll find us.)
OBSERVAÇÃO: Agora eu posto meus ALERTAS DE NEGOCIAÇÃO em minha CONTA pessoal do FACEBOOK e TWITTER. Não se preocupe, pois não publico vídeos estúpidos sobre gatos ou o que eu como!
Комментариев нет:
Отправить комментарий