Tuesday 3 April 2018

Sistema de negociação de programação genética


sistema de comércio de programação genética
Esta página usa quadros, mas seu navegador não os suporta.
O GRAIL fornece sinais de negociação diários para uma seleção de mercados de derivativos, incluindo os futuros S & P, Euro Currency, Hang Seng, Dax e FTSE. Entre para ler mais sobre o nosso sistema S & P, que gerou 385 pontos de lucro entre março de 2002 e outubro de 2003 (77,1% p. a.) durante o comércio em tempo real!
NOVO!! O Genetic System Builder cria sistemas de negociação robustos com o EasyLanguage TM totalmente divulgado no mercado de sua escolha. O software inclui gerenciamento de dinheiro e um dos genéticos do otimizador de portfólio genético. Indispensável para qualquer comerciante de sistemas: de iniciante a gerente de hedge funds! Demonstração gratuita disponível.
Para visualizar gráficos de Equity de sistemas de negociação modelados pelo GSB, clique aqui.
Nosso software de gerenciamento de dinheiro pode aumentar os lucros de um sistema de negociação existente. Peça o nosso relatório que irá mostrar em 8 etapas fáceis, como implementar qualquer uma das seguintes estratégias de dimensionamento de posição / gerenciamento de dinheiro em seu próprio sistema:% Margem,% de Risco, F otimizado, F Optimal Diluído, Critério de Kelly, Kelly Diluído e% Volatilidade. (Todo o código da TradeStation EasyLanguage TM incluído)
Nós nos especializamos em design, programação e teste de sistemas comerciais em TradeStation TM, Pascal, C ++ e Excel.

Usando a Programação Genética para evoluir Estratégias de Negociação.
Um amigo e eu recentemente trabalhamos juntos em uma tarefa de pesquisa onde usamos a Programação Genética (GP) com sucesso para desenvolver soluções para um problema de classificação financeira do mundo real. Este problema, chamado de análise de segurança, envolve a determinação de quais títulos devem ser comprados para realizar um bom retorno sobre o investimento no futuro. Para encontrar uma solução para este problema, usamos a Programação Genética para desenvolver uma população de árvores de decisão que poderia realizar análise de segurança em sessenta e duas das ações de tecnologia listadas no S & amp; P 500. Ou seja, desenvolvemos árvores de decisão capazes de classificar esses estoques de acordo com se eles deveriam ser comprados ou vendidos curtos.
Árvores de decisão de análise de segurança.
Durante o estudo, desenvolvemos dois tipos de árvores de decisão de análise de segurança. O primeiro utilizou apenas indicadores da análise fundamental e o segundo utilizou apenas indicadores da análise técnica. A análise fundamental é um método de avaliação de uma segurança para medir seu valor intrínseco examinando fatores econômicos, financeiros e outros fatores qualitativos e quantitativos relacionados. A análise técnica é um método de avaliação de títulos através da análise de estatísticas geradas pela atividade de mercado.
Uma estratégia para análise de segurança, independentemente de usar indicadores técnicos ou fundamentais, consistirá em uma série de regras para a tomada de decisões de investimento. Essa estratégia pode ser representada como uma árvore de decisão onde os nós terminais representam decisões de investimento e os nós funcionais representam regras baseadas em indicadores técnicos ou fundamentais. Devido a isso, muitas estratégias de investimento existentes são representadas na forma de árvores de decisão.
Foram selecionados, no total, quarenta e dois indicadores diferentes, tanto da análise técnica quanto da análise fundamental. As estratégias evoluídas foram para um período de detenção fixo de três meses, seis meses, nove meses ou doze meses de duração. As árvores de decisão foram novamente testadas usando dados de mercado de 2011 a 2013.
Programação genética.
A programação genética é uma especialização de um Algoritmo Genético. Algoritmos genéticos são baseados na população, o que significa que eles operam dentro de uma população composta por muitos indivíduos diferentes. Cada indivíduo é representado por um genótipo exclusivo (geralmente codificado como um vetor). Os Algoritmos Genéticos modelam o processo de evolução genética através de uma série de operadores, incluindo o operador de seleção que modela a sobrevivência do operador mais adequado, o crossover que modela a reprodução sexual e o operador de mutação que modela as mutações genéticas que ocorrem aleatoriamente para indivíduos em uma população. Esses operadores, quando combinados, produzem o que os cientistas da computação se referem como um Algoritmo Genético.
Os três operadores de um Algoritmo Genético sendo aplicados a uma população de vetores (blocos)
A diferença entre um Algoritmo Genético e o Algoritmo de Programação Genética é a forma como os genótipos individuais são representados. Nos Algoritmos Genéticos, os genótipos são representados como Cordas ou como Vetores, enquanto na Programação Genética esses genótipos são representados usando estruturas de dados de árvores. A operação de crossover em estruturas de árvores pode acontecer de algumas maneiras, uma sub-árvore é trocada, um nó de folha é removido ou alterado, ou os valores de algum nó são ajustados. Uma ilustração disso é mostrada abaixo,
Este diagrama descreve a estratégia de cruzamento de uma árvore de decisão usada pela programação genética para análise de segurança.
Após este estudo, concluímos que a programação genética tem um grande potencial para desenvolver novas estratégias de análise de segurança e gerenciamento de investimentos, desde que possam ser obtidas melhores funções para o cálculo da aptidão física. Ao longo de nosso estudo de pesquisa, vimos que as árvores de decisão evoluíram usando a Programação Genética podendo produzir classificações de estoque que superaram o retorno médio do mercado de forma consistente nos quatro trimestres. Isso é verdade para árvores de decisão que utilizaram indicadores técnicos, bem como árvores de decisão que usaram indicadores fundamentais. Várias outras conclusões foram derivadas de nossa pesquisa, incluindo os tamanhos ótimos e o nível de heterogeneidade para as árvores de decisão e o valor adicionado pelos diferentes indicadores e o desempenho das estratégias em relação um ao outro. Alguns resultados estão incluídos abaixo.
Relacionamento entre o tamanho da árvore de decisão para a aptidão Os indicadores mais populares utilizados na árvore de decisão final.
Tamanho médio das árvores por iteração Exemplo Exemplo de Árvore de Decisão de Análise de Segurança Árvore de Decisão de Análise de Segurança.
Conclusão.
Dois relatórios de pesquisa independentes foram produzidos por mim e meu amigo. Ambos os relatórios são muito mais detalhados sobre nosso estudo de pesquisa, a abordagem adotada, nosso projeto e implementação, as estratégias de teste que usamos, nossas conclusões e recomendações para pesquisas futuras. Você também pode baixar uma cópia do código-fonte criado durante a implementação. Para os meus colegas, conta mais técnica do projeto, clique aqui.
História anterior.
Agrupamento usando otimização de colunas de formigas.
Próxima História.
Sistemas Inteligentes de Negociação Algorítmica.
[Comentário copiado de LinkedIn Computational Finance Group]
Muito bom trabalho. A escrita também é maravilhosa.
Eu só tive a chance de olhar para o relatório. Algumas estatísticas que seriam boas para analisar: como o seu portfólio da GA se compara às carteiras dos mesmos ativos. Eu olhava para duas carteiras de comparação: um portfólio igual ponderado e um portfólio de estilo S & P que é ponderado pela capitalização de mercado.
Como se verifica, pode ser surpreendentemente difícil vencer um portfólio igualmente ponderado. Rebalancear as carteiras trimestralmente, uma vez que alguns estoques vão subir e alguns vão cair (por exemplo, você quer manter os pesos do portfólio iguais, à medida que os preços mudam). Se o seu algoritmo genético supera essas carteiras, então você tem "alfa" (excesso de retorno sobre o benchmark).
Claro que o alfa não é tudo. Você deve olhar para a Perda de cauda esperada (ETL) (também conhecida como CVaR, déficit esperado) tanto para o portfólio da GA quanto para o "benchmark". Se você tiver menos risco para o mesmo retorno, então você pode considerar que você bateu o benchmark. A medida ETL é uma medida melhor do que a relação Sharpe quando se trata de risco, uma vez que a relação Sharpe mede a variação, que é de dois lados. ETL apenas mede a perda.
Uma observação: um problema com GA e redes neurais (NN) é que são caixas negras. É difícil determinar por que eles fazem as "escolhas" que eles fazem. Então imagine que você é um gerente de portfólio. Seu GA ou NN começa a funcionar mal. Que medidas você pode tomar para abordar isso? O problema é que tudo o que você pode realmente fazer é treinar e você não sabe se a reconversão melhorará. Claro que com uma árvore de decisão não é tão ruim assim, pelo menos você sabe quais as decisões tomadas. O problema é que, se você estiver constantemente procurando por ele para tomar as decisões "corretas", então você também terá um problema.
Essas questões são razões que você não vê esses algoritmos usados ​​tanto (embora sejam usados).
[Resposta copiada do LinkedIn Computational Finance Group]
Obrigado pelas palavras complementares Ian, agradecemos que você se interesse em nossa pesquisa e nos forneça alguns comentários perspicazes.
Na nossa abordagem, apenas comparamos o desempenho das seleções de estoque feitas por nossas árvores de decisão em relação a um portfólio igualmente ponderado. Estender a nossa pesquisa para incorporar diferentes carteiras é uma ideia interessante que acompanharemos durante a próxima fase de desenvolvimento. Também estamos considerando implementar algumas das abordagens bem conhecidas para a análise de segurança para serem usadas como benchmarks de desempenho adicionais. Se você ou qualquer outra pessoa tiver sugestões sobre quais abordagens podem fazer bons benchmarks, por favor me avise.
Seus comentários sobre o uso de outras medidas de desempenho são atualizados. Gostaríamos definitivamente de voltar a olhar para a estrutura de back-testing e investigar maneiras de torná-lo mais rigoroso e menos propenso a excesso de ajuste. Também gostaríamos de implementar funções de fitness adicionais que levem em consideração medidas de risco de portfólio e medidas de retorno excessivo (alfa). Examinarei as medidas que você mencionou e verá o melhor possível para incorporá-las à nossa estrutura existente. Também consideraremos como é possível usar um framework de back-testing de código aberto, como ZipLine, o framework de back-testing usado por quantopian.
Suas observações sobre a natureza e o uso de GA e Neural Networks em finanças são muito interessantes. O desafio de tornar esses algoritmos mais transparentes e, francamente, um pouco menos assustador, é que não se deve tirar levemente. Meu colega atualmente está trabalhando em uma tarefa de pesquisa onde ele está tentando levantar o véu em alguns dos trabalhos internos das Redes Neurais. Se ele for bem sucedido, então, em vez de precisar redigir constantemente redes neuronais quando "algo der errado", ele pode isolar a causa do problema na rede neural e adaptar sua arquitetura de acordo. Ele está considerando usar uma aplicação financeira do mundo real de Neural Networks em sua pesquisa. Então, se você tem alguma idéia sobre isso, por favor me avise?
Pessoalmente falando, atualmente estou trabalhando em uma tarefa de pesquisa onde estou tentando construir uma estrutura algorítmica para a seleção e otimização de portfólio comercial. Faz uso de alguns algoritmos de Inteligência Computacional e em frente Eu vou manter em mente os problemas que você mencionou. Vou tentar identificar maneiras de mitigar ou eliminar essas preocupações no quadro. Obrigado novamente por todos os seus comentários, agradecemos o feedback. Se você tem mais boas ideias, entre em contato conosco.
[Comentário copiado de LinkedIn Computational Finance Group]
Eu acho que a abordagem mais razoável para backtesting é comparar seus resultados com o que acontece com o comércio aleatório que ainda obedece a quaisquer restrições que você está impondo no portfólio. Isso é discutido em:
[Resposta copiada do LinkedIn Computational Finance Group]
Obrigado Patrick, essa é uma boa sugestão. Eu entendo a abordagem porque o conceito de backtesting de um algoritmo contra uma estratégia de negociação aleatória é conceitualmente semelhante ao teste de um algoritmo de busca contra busca aleatória. O que é algo que fiz antes. Quão popular você diria que a estratégia de backtesting é?
[Resposta copiada do LinkedIn Computational Finance Group]
Stuart: Depressa impopular. Mas tem que começar em algum lugar.
[Comentário copiado de LinkedIn Computational Finance Group]
Parece bom, qual é o motivo do uso dos 62 estoques de tecnologia, e não de 500 ações?
[Cópias de resposta do LinkedIn Computational Finance Group]
Oi JZ, essa é uma boa pergunta e fico feliz que você tenha perguntado. Debatimos a nossa abordagem e uma opinião externa seria muito apreciada. Limitamos nossa amostra de teste a apenas um setor devido a dois motivos:
1) Acreditamos que as árvores de decisão que utilizam Indicadores Fundamentais podem variar drasticamente entre diferentes indústrias. Isso ocorre porque as proporções financeiras podem variar entre diferentes indústrias e pensamos que um investidor que use essa abordagem desejaria evoluir árvores de decisão para cada setor de forma independente. ** e.
2) Nós só recebemos três semanas para completar a tarefa e nos preocupava que adicionar mais ações seria muito demorado. Isso resultou ser uma preocupação infundada, uma vez que nossa implementação poderia facilmente lidar com todos os 500 estoques no S & amp; P500 sem problemas de desempenho significativos.
** Nota: isso não se aplica a árvores de decisão usando indicadores de Análise Técnica.
Extremamente interessante. Bom Stuart.
É um exercício interessante, mas não vejo qual a vantagem do GP em simplesmente treinar toda a Árvore de Decisão usando alguma medida de impureza. Parece que faz o mesmo apenas de forma muito ineficiente e provavelmente com menos precisão também.
Oi, Ignas, para ser perfeitamente honesto, o GP sofre muitas desvantagens e a técnica ainda está sendo aperfeiçoada. Tendo sido dito, os métodos tradicionais de indução de árvores de decisão (que eu sou mais recentemente um fã de) também têm suas desvantagens que podem (ou não) ser superadas pela programação genética.
Estou tentando implementar o GA em python. Quais são algumas bibliotecas de python que você recomendaria.
Você tentou trocar seu sistema ao vivo?
Oi Lawrence, infelizmente não. Este post tem muitos anos e representa um antigo projeto coletivo meu :-). Eu recomendaria dar uma olhada no Genotick para uma estratégia de negociação baseada na programação genética imparcial. Eu acredito que as pessoas estão negociando ao vivo.
Envie um comentário.
Cancelar resposta.
Siga a Turing Finance.
Turing Finance Mailing List.
Amigos da Turing Finance.
Quantocracy é o melhor agregador de blog de finanças quantitativas com links para novas análises postadas todos os dias.
NMRQL é o fundo hedge quantitativo de que sou parte. Usamos a aprendizagem de máquinas para tentar vencer o mercado.

Forex Mecânico.
Negociação no mercado FX usando estratégias mecânicas de negociação.
Um computador pode projetar um sistema de comércio? Segunda parte: Programação genética.
Um pouco mais do que uma semana atrás (aqui) comecei uma série de postagens sobre a criação automática de estratégias de negociação mecânica e como isso pode ser feito por um computador. Há muitas maneiras pelas quais podemos informar um computador para projetar sistemas comerciais, mas nenhum deles é tão poderoso ou eficiente quanto a programação genética. Para entender todas as postagens futuras, escreverei sobre este assunto, é importante compreender os conceitos de algoritmos genéticos e programação genética e como eles podem ser usados ​​para criar sistemas de negociação automatizados sem "# 8211; quase "# 8211; qualquer intervenção humana. Mais importante ainda, é vital explicar alguns dos problemas desta abordagem e como eles podem ser eliminados para obter estratégias de negociação muito robustas, que têm um alto poder de sucesso no futuro. Hoje, aprenderemos um pouco sobre a programação genética, o que é, algumas das suas limitações e o que pode fazer.
O que é programação genética? Para responder a esta questão, primeiro precisamos pensar sobre algoritmos genéticos e sua definição. Vários anos atrás, os programadores começaram a procurar métodos de otimização mais eficientes para problemas em que grandes quantidades de variáveis ​​# 8211; e combinações variáveis ​​& # 8211; precisava ser testado em relação a um determinado conjunto de dados. Uma das abordagens mais bem-sucedidas para encontrar uma solução muito boa para o problema tomou uma dica da biologia evolutiva. Na natureza, as melhores soluções & # 8221; são selecionados através do estresse ambiental, dando origem a novas adaptações e espécies apenas através de um processo seletivo.
Ao lidar com grandes otimizações, podemos adotar uma abordagem similar (conhecida como algoritmos genéticos). Se 5 variáveis ​​precisam ser otimizadas uma contra a outra e cada variável pode ter 10 valores possíveis, os algoritmos genéticos nos dizem que selecionamos aleatoriamente as combinações X e então, # 8211; dessas combinações # 8211; Selecione e & # 8220; raça & # 8221; os mais bem sucedidos para criar um novo grupo de combinações potencialmente mais bem-sucedidas. Por aqueles que você seleciona os melhores, combine, selecione os melhores, combine, etc. Cada etapa neste processo ou novo conjunto de parâmetros é chamado de & # 8220; geração & # 8221; que foi gerado pelas anteriores combinações mais bem-sucedidas. Às vezes, mutações & # 8221; & # 8211; que são apenas pequenas perturbações no set - são introduzidas para novas gerações para melhor imitar o processo de seleção natural. A imagem abaixo ilustra como isso funcionaria para o exemplo acima mencionado.
Cientistas da computação descobriram, depois de um tempo, que a metodologia de algoritmo genético permitiu que eles encontraram soluções para problemas muito complexos após apenas um determinado número de gerações. Esta abordagem economiza uma enorme quantidade de tempo de computador em comparação com a abordagem de força bruta total que implica simplesmente uma comparação de todas as combinações possíveis. O programa é executado & # 8211; gerações são criadas & # 8211; até encontrar um certo limite para o problema dado. Se as variáveis ​​acima fossem parâmetros para um sistema de negociação, a solução seria interrompida uma vez que o lucro não aumentasse, o desdobramento não diminuiu, etc. (o que significa que não há melhora de uma geração para a próxima).
Depois de fazer isso com a otimização de variáveis, as pessoas começaram a se perguntar se poderia ser possível fazer exatamente a mesma coisa com a lógica de programação, usar uma abordagem genética para gerar um programa para realizar uma determinada tarefa com base na & # 8220; sucesso & # 8221; de gerações de programas contra um problema particular. Foi quando a programação genética nasceu. Neste campo, fazemos a mesma coisa que na abordagem de algoritmo genético acima mencionada com a única diferença de que, em vez de otimizar parâmetros simples, otimizamos a lógica de um programa. A abordagem de programação genética geraria primeiro um determinado número de programas com lógica aleatória e # 8211; de acordo com alguns pressupostos iniciais e # 8211; e então crie aqueles que foram & # 8220; melhor ajuste & # 8221; para o problema até obter uma solução que atenda às nossas necessidades.
No mundo da negociação, isso significa que, no início, vários programas são gerados aleatoriamente com base em alguns dados simples que estão disponíveis (como indicadores e valores de preço) e os sistemas X são gerados, os quais seguiriam diferentes conjuntos de lógica de negociação. Por exemplo, um programa só entraria o preço após a última vela se fechar acima da alta semanal, enquanto outra entraria no mercado quando a média móvel de 5 períodos fosse decrescente por cinco períodos, outra usaria um conjunto diferente de lógica, etc. Então, o mais bem sucedido dessas abordagens seriam criadas para chegar a um novo conjunto de lógica de negociação que seria a prole da primeira geração, isso seria feito uma e outra vez até chegar a um ponto em que a próxima geração não oferece melhorias ao longo da última. A imagem abaixo mostra um exemplo real de como o lucro melhora nas gerações futuras dos sistemas de negociação.
O que conseguimos no final é um sistema de negociação com lógica ótima para enfrentar um determinado par de moedas em um determinado período de tempo. No entanto, deve-se ter grande cuidado, uma vez que um código de programação genética muito complexo que permite usar lógica de entrada e saída tão complexa quanto gosta pode facilmente encaixar o sistema na aleatoriedade dos dados, fazendo com que o sistema pareça extremamente lucrativo quando na realidade ele não conseguirá esse sucesso. Também pode acontecer que a lógica final seja totalmente impossível de entender e as ineficiências exploradas podem tornar-se obscuras e impossíveis de digerir. Por este motivo, há várias etapas que precisam ser tomadas para evitar que isso aconteça. O algoritmo de programação genética deve restringir as gerações à lógica simétrica de saída / entrada simples (mesmo para longos como para shorts) com lógica que é fácil de entender e que pode ser facilmente expressa. Outro fator muito importante é deixar algum período de tempo (um ano ou dois) para avaliação direta para que a lógica possa ser testada no futuro para ver se é robusto o suficiente para lidar com períodos de mercado para os quais não foi otimizado .
Os resultados finais de fazer isso podem e são bastante maravilhosos. Eu consegui codificar a filosofia acima no Metatrader 4, usando-a para gerar sistemas que possuem a lógica & # 8221 projetada por computador; que são simples, robustos e conseguem enfrentar condições de mercado variáveis ​​e conjuntos # 28201 não optimizados; com muito bons resultados. A imagem acima mostra a curva de patrimônio de um desses sistemas nos gráficos diários GBP / USD (os últimos 12 meses neste teste de quase 11 anos foram incluídos no conjunto de dados inicial usado para obter o código do programa # 8217; s ). Provavelmente, levará alguns meses para experimentar completamente isso e lançar o primeiro sistema robusto programado da Asirikuy, mas, definitivamente, essa será uma direção nova e interessante para o desenvolvimento do sistema no site.
Se você quiser saber mais sobre o desenvolvimento do sistema de negociação e como você pode obter uma verdadeira educação em torno de sistemas de negociação automatizados, considere se juntar ao Asirikuy, um site repleto de vídeos educacionais, sistemas de negociação, desenvolvimento e uma abordagem sólida, honesta e transparente para negociação automatizada em geral . Espero que tenha gostado deste artigo ! : o)
8 Respostas para o & # 8220? Um computador pode projetar um sistema de comércio? Segunda Parte: Programação Genética & # 8221;
Não me parece sensacional, mas você continua chegando com coisas que eu não teria imaginado mesmo há 1 ano. De alguma forma, continuo ficando surpreso com as abordagens e as idéias que você apresenta, e leio as entradas do seu blog e as atualizações da Asirikuy, me achando dizendo: # 8220; realmente?! & # 8221;
Dizendo que você pensa # 8220; fora da caixa & # 8221; é um eufemismo.
Muito obrigado pelo seu comentário: o) Eu sempre tento procurar novas ideias para obter lucros para mim, meus clientes pessoais e membros da Asirikuy, por isso estou sempre no olhar para implementar novos métodos e estratégias para atender às nossas necessidades de diversificação e prováveis ​​sistemas lucrativos. Fico feliz que você goste dos meus desenvolvimentos e que você continue a ser um leitor de blog frequente. Espero que eu tenha muitas mais boas ideias para criar sistemas para o Asirikuy no futuro e sem dúvida e # 8211; com a ajuda de membros da Asirikuy & # 8211; Toda a comunidade começará a contribuir cada vez mais com o mesmo objetivo. Muito obrigado novamente por seus comentários e palavras gentis Josh! : o)
Uma direção muito emocionante, para dizer o mínimo. O meu intuito é que não podemos desenvolver melhores sistemas desse modo do que com o desenvolvimento manual em termos de lucro anual médio / redução máxima, mas talvez possamos acelerar o processo de desenvolvimento de novos sistemas lucrativos de longo prazo.
Eu adoraria ler mais detalhes teóricos e técnicos.
Pela maneira, os algoritmos genéticos podem ser usados ​​na busca de configurações de portfólio ótimas também. Hm, que perspectiva!
Obrigado pelo seu comentário: o) Eu acredito exatamente na mesma coisa e encontrei algo bastante parecido com o que você diz. A qualidade global real dos sistemas de negociação é semelhante ou mesmo menor que o que eu pessoalmente poderia desenvolver manualmente (comparando os sistemas com especialistas atuais da Asirikuy), mas a velocidade do desenvolvimento é grandemente aprimorada, bem como o desenvolvimento de sistemas para pares que Não estou familiarizado com isso. Talvez esta seja a principal razão pela qual eu decidi tentar essa abordagem porque alguns pares têm ineficiências muito evasivas que podemos encontrar dessa maneira.
Em relação à análise de portfólio, você está realmente certo! Na verdade, poderíamos usar uma abordagem de algoritmo genético para otimizar portfólios e encontrar uma solução para esse problema. Seria ótimo se você quisesse explorar esse lado da solução quando você começou a resolver esse problema: o) Muito obrigado pelo seu comentário!
Grande publicação de um tópico fascinante. Eu fiz algum trabalho nessa área ao completar meu Mestrado em Ciências da Computação. Infelizmente, nunca tive a oportunidade de fazer projetos reais, mas aqui estão minhas breves idéias.
A maioria dos projetos de AI (Inteligência Artificial), como Algoritmos Genéticos, são basicamente "# 8221; problemas. Dadas todas as variáveis, temos um grande espaço de pesquisa e a tarefa é reduzir o espaço de busca. Dito de outra forma, & # 8220; ameixa e # 8221; a árvore de possibilidades para um espaço de pesquisa menor que pode ser concluído dentro de um prazo razoável.
Começa com uma função de fitness & # 8220; # 8221; que testa como seus resultados atuais se comparam a todos os seus resultados anteriores. Neste caso, eu acho que algo como Rácio de lucro / descida ajustado para o Índice de dor. Você pode usar seus resultados de sistemas atuais como ponto de partida para ver se seus novos sistemas são melhores do que os existentes.
Uma vez que é feito, a & # 8220; art & # 8221; O aspecto vem da escolha das condições usadas para semear a busca. Aquele é o ponto de conhecimento do mercado para decidir quais as condições para começar, já que todos os sistemas resultantes serão derivados do seu # 8220; parental & # 8221; premissas.
Eu acho que as pessoas com conhecimento de primeira mão dos mercados Forex podem ter algumas boas informações com base em suas observações. Eu não posso ajudá-lo lá, mas posso sugerir a ideia de & # 8220; regression & # 8221 ;. Para cada par, em que horas do dia esse par gosta de tendência, contra provável que regresse. Este é um conceito muito poderoso e existem alguns EA comerciais comerciais bem sucedidos com registros de longo prazo com base nesse conceito. E acho que se presta bem a esse tipo de algoritmo baseado em pesquisa.
Então, essas são minhas melhores idéias e espero que você possa transformá-las em lucros para o resto de nós. Continue com o ótimo trabalho!
Muito obrigado por seus comentários e idéias: o) Eu sou bastante novo no mundo da programação genética e você verá que o que desenvolvi é bastante simples, mas eficaz para encontrar sistemas de negociação rentáveis ​​a longo prazo. Como você menciona, as soluções iniciais têm muita influência no resultado final e os sistemas muito mais bem-sucedidos são produzidos se a primeira abordagem faz pelo menos alguns & # 8220; sentido comercial & # 8221 ;.
Eu falarei mais sobre alguns dos conceitos que você mencionou em futuras postagens sobre esse tópico e eu certamente considerarei suas sugestões. Obrigado novamente pelo seu comentário Chris!
[& # 8230;] você não leu minhas postagens anteriores sobre este assunto, eu encorajaria você a ler isso e esta publicação onde eu explico a idéia por trás da minha abordagem de programação genética e como isso pode de fato levar [& # 8230 ;]
[& # 8230;] sistemas com menores usando minha estrutura de programação genética (você pode ler mais sobre isso aqui, aqui e aqui) e quais os resultados preliminares que consegui alcançar. Vou falar sobre os diferentes [& # 8230;]

sistema de comércio de programação genética
Criando um Sistema de Negociação no Laboratório de Sistemas de Negociação.
O Trading System Lab gerará automaticamente Sistemas de Negociação em qualquer mercado em poucos minutos, usando um programa de computador muito conhecido, conhecido como AIMGP (Indução Automática de Código de Máquina com Programação Genética). A criação de um sistema de negociação no Trade System Lab é realizada em 3 etapas fáceis. Primeiro, é executado um pré-processador simples que extrai e pré-processa automaticamente os dados necessários do mercado com o qual você deseja trabalhar. A TSL aceita dados CSI, MetaStock, AIQ, TradeStation, dados de Internet gratuitos, ASCII, TXT, CSV, CompuTrac, DowJones, FutureSource, TeleChart2000v3, TechTools, XML, Binário e Internet. Em segundo lugar, o gerador do sistema de negociação (GP) é executado por vários minutos, ou mais, para evoluir um novo sistema de negociação. Você pode usar seus próprios dados, padrões, indicadores, relações de inter-mercado ou dados fundamentais dentro do TSL. Terceiro, o Sistema de Negociação evoluído é formatado para produzir novos sinais do Sistema de Negociação dentro da TradeStation ™ ou muitas outras plataformas de negociação. O TSL escreverá automaticamente Easy Language, Java, Assembler, código C, código C # e WealthLab Script Language. O Trading System pode então ser negociado manualmente, negociado através de um corretor ou negociado automaticamente. Você pode criar o Trading System você mesmo ou podemos fazer isso por você. Então, você ou o seu corretor podem trocar o sistema manualmente ou automaticamente.
O Programa de Genética do Sistema de Negociação do Comércio contém vários recursos que reduzem a possibilidade de montagem da curva ou produzem um Sistema de Negociação que não continua a atuar no futuro. Em primeiro lugar, os Sistemas de Negociação evoluídos têm seu tamanho reduzido ao tamanho mais baixo possível através do que é chamado de Pressão Parsimonia, extraindo do conceito de comprimento mínimo da descrição. Assim, o sistema de negociação resultante é o mais simples possível e, em geral, acredita-se que, quanto mais simples for o Sistema de Negociação, melhor será no futuro. Em segundo lugar, a aleatoriedade é introduzida no processo evolutivo, o que reduz a possibilidade de encontrar soluções que sejam localmente, mas não globalmente otimizadas. A aleatoriedade é introduzida sobre não apenas as combinações do material genético utilizado nos Sistemas de Negociação evoluídos, mas em Parsimony Pressure, Mutation, Crossover e outros parâmetros de GP de nível superior. O teste de fora da amostra é realizado enquanto o treinamento está em andamento com informações estatísticas apresentadas nos testes de Teste de Amostra e Fora do Teste de Amostra. Os registros de execução são apresentados ao usuário para dados de treinamento, validação e fora de amostra. Bem comportado O desempenho fora da amostra pode ser indicativo de que o Sistema de Negociação está evoluindo com características robustas. A deterioração substancial no teste automático de Out of Sample em comparação com o teste In Sample pode implicar que a criação de um Sistema de Negociação robusto está em dúvida ou que o Terminal ou Conjunto de Entrada pode precisar ser alterado. Finalmente, o Conjunto de terminais é cuidadosamente escolhido, de modo a não prejudicar demais a seleção do material genético inicial em relação a qualquer viés ou sentimento de mercado específico.
O TSL não começa a ser executado com um Sistema de Negociação predefinido. Na verdade, apenas o conjunto de entradas e uma seleção de modos ou modos de entrada no mercado, para busca e atribuição automática de entrada, são feitos inicialmente. Um padrão ou comportamento indicador que pode ser pensado como uma situação de alta pode ser usado, descartado ou invertido dentro do GP. Nenhum padrão ou indicador é pré-atribuído a qualquer viés de movimento de mercado específico. Esta é uma saída radical do desenvolvimento do sistema de negociação gerado manualmente.
Um Sistema de Negociação é um conjunto lógico de instruções que dizem ao comerciante quando comprar ou vender um mercado específico. Essas instruções raramente exigem intervenção de um comerciante. Os Sistemas de Negociação podem ser negociados manualmente, observando as instruções de negociação em uma tela do computador, ou podem ser negociados, permitindo que o computador entre em negociações no mercado automaticamente. Ambos os métodos estão em uso generalizado hoje. Existem mais gerentes de dinheiro profissionais que se consideram comerciantes "sistemáticos ou mecânicos" do que aqueles que se consideram "discretos", e o desempenho dos gerentes de dinheiro sistemáticos é geralmente superior ao dos gestores de dinheiro discrecional. Estudos mostraram que as contas de negociação geralmente perdem dinheiro com mais freqüência se o cliente não estiver usando um Sistema de Negociação. O aumento significativo nos sistemas de negociação nos últimos 10 anos é evidente, especialmente nas corretora de commodities, no entanto, as empresas de corretagem de mercado de ações e títulos estão cada vez mais conscientes dos benefícios através do uso de sistemas de negociação e alguns começaram a oferecer sistemas de negociação para seus clientes de varejo.
A maioria dos gestores de fundos mútuos já estão usando algoritmos computacionais sofisticados para orientar suas decisões quanto ao "estoque quente a escolher" ou o que "rotação do setor" é favorável. Computadores e algoritmos tornaram-se mainstream no investimento e esperamos que essa tendência continue a ser mais jovem, os investidores mais experientes em informática continuam a permitir que partes do seu dinheiro sejam gerenciadas pelos sistemas de negociação para reduzir o risco e aumentar os retornos. As enormes perdas experimentadas pelos investidores que participam da compra e detenção de ações e fundos de investimento como o mercado de ações derretido nos últimos anos está promovendo esse movimento para uma abordagem mais disciplinada e lógica para investir no mercado de ações. O investidor médio percebe que ele ou ela atualmente permite que muitos aspectos de suas vidas e a vida de seus entes queridos sejam mantidos ou controlados por computadores, como os automóveis e as aeronaves que usamos para o transporte, o equipamento de diagnóstico médico que usamos para a manutenção da saúde, os controladores de aquecimento e refrigeração que usamos para controle de temperatura, as redes que usamos para informações baseadas na internet, até mesmo os jogos que jogamos para entretenimento. Por que, então, alguns investidores de varejo acreditam que podem "disparar do quadril" em suas decisões sobre "o que" estoque ou fundo mútuo para comprar ou vender e esperar ganhar dinheiro? Finalmente, o investidor médio ficou cauteloso com os conselhos e informações encaminhados por corretores, contadores, diretores corporativos e consultores financeiros sem escrúpulos.
Nos últimos 20 anos, matemáticos e desenvolvedores de software pesquisaram indicadores e padrões em mercados de ações e commodities buscando informações que possam apontar para a direção do mercado. Essas informações podem ser usadas para melhorar o desempenho dos Sistemas de Negociação. Geralmente, este processo de descoberta é realizado através de uma combinação de testes e erros e mais sofisticados "Mineração de Dados". Normalmente, o desenvolvedor levará semanas ou meses de crunching de números para produzir um potencial Sistema de Negociação. Muitas vezes, este sistema de negociação não funcionará bem quando usado no futuro devido ao que é chamado de "ajuste de curva". Ao longo dos anos, tem havido muitos sistemas de negociação (e empresas de desenvolvimento de sistemas de negociação) que vieram e foram, já que seus sistemas falharam na negociação ao vivo. O desenvolvimento de sistemas de negociação que continuam a atuar no futuro é difícil, mas não é impossível de realizar, embora nenhum desenvolvedor ético ou gerente de dinheiro dê uma garantia incondicional de que qualquer Sistema de Negociação ou, por isso, qualquer ação, vínculo ou fundo mútuo, continuará para produzir lucros no futuro para sempre.
O que demorou semanas ou meses para que o desenvolvedor do Trading System produza no passado pode agora ser produzido em minutos através do uso do Trading System Lab. O Trading System Lab é uma plataforma para a geração automática de sistemas de negociação e indicadores de negociação. A TSL faz uso de um mecanismo de programação genética de alta velocidade e produzirá sistemas de negociação a uma taxa de mais de 16 milhões de barras de sistema por segundo com base em 56 entradas. Note-se que apenas alguns insumos serão realmente usados ​​ou necessários, resultando em estruturas de estratégia geralmente simples evoluídas. Com aproximadamente 40.000 a 200.000 sistemas necessários para uma convergência, o tempo de convergência para qualquer conjunto de dados pode ser aproximado. Note-se que não estamos simplesmente executando uma otimização de força bruta de indicadores existentes que procuram parâmetros ótimos a partir dos quais usar em um Sistema de Negociação já estruturado. O Gerador do Sistema de Negociação começa em uma origem de ponto zero, não fazendo suposições sobre o movimento do mercado no futuro e então "evolui" Sistemas de Negociação a uma taxa muito alta combinando informações presentes no mercado e formulando novos filtros, funções, condições e relacionamentos à medida que progride para um sistema de negociação "geneticamente modificado". O resultado é que um excelente sistema de negociação pode ser gerado em poucos minutos em 20-30 anos de dados de mercado diários em praticamente qualquer mercado.
Ao longo dos últimos anos, houve várias abordagens para a otimização do Sistema de Negociação que empregam o Algoritmo Genético menos poderoso. Os Programas Genéticos (GP's) são superiores aos Algoritmos Genéticos (GA's) por vários motivos. Primeiro, os GPs convergem em uma solução a uma taxa exponencial (muito rápido e ficando mais rápido), enquanto os Algoritmos Genéticos convergem em uma taxa linear (muito mais lenta e não está ficando mais rápida). Em segundo lugar, os GPs realmente geram o código da máquina do Sistema de Negociação que combinava o material genético (indicadores, padrões, dados inter-mercado) de maneiras únicas. Essas combinações únicas podem não ser intuitivamente óbvias e não requerem definições iniciais pelo desenvolvedor do sistema. As relações matemáticas únicas criadas podem se tornar novos indicadores ou variantes na Análise Técnica, ainda não desenvolvidas ou descobertas. GA, por outro lado, simplesmente procure soluções ótimas à medida que progridem no intervalo de parâmetros; eles não descobrem novas relações matemáticas e não escrevem seu próprio código de Sistema de Negociação. O código do sistema comercial do GP de vários comprimentos, usando genomas de comprimento variável, modificará o comprimento do Sistema de Negociação através do chamado cruzamento não homólogo e descartará completamente um indicador ou padrão que não contribua para a eficiência do Sistema de Negociação. O uso de GA apenas blocos de instruções de tamanho fixo, fazendo uso de apenas cruzamentos homólogos e não produzem código de código de troca de comprimento variável, nem descartarão um indicador ou padrão ineficiente tão prontamente como um GP. Finalmente, os Programas Genéticos são um avanço recente no domínio da aprendizagem por máquinas, enquanto os Algoritmos Genéticos foram descobertos há 30 anos. Os Programas Genéticos incluem todas as principais funcionalidades dos Algoritmos Genéticos; crossover, reprodução, mutação e fitness, no entanto GPs incluem características muito mais rápidas e robustas, tornando a GP a melhor opção para produzir Trading Systems. O GP empregado no Trading System Generator da TSL é o GP mais rápido atualmente disponível e não está disponível em nenhum outro software de mercado financeiro no mundo.
O Algoritmo de Programação Genética, o Simulador de Negociação e os Motores Fitness utilizados na TSL levaram 8 anos para produzir.
O Trading System Lab é o resultado de anos de trabalho árduo de uma equipe de engenheiros, cientistas, programadores e comerciantes, e acreditamos que representa a tecnologia mais avançada disponível hoje para comercializar os mercados.

sistema de comércio de programação genética
Se você ainda procura uma vantagem nos mercados, os sistemas de negociação automatizada são a melhor maneira de obtê-lo. Saber mais.
Copyright (c) 2010 Adaptrade Software. Todos os direitos reservados.
OS RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES INERENTES. DESEJO 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 SÃO TAMBÉM SUJEITOS AO FATO QUE ESTÃO DESIGNADOS 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.
EasyLanguage e TradeStation são marcas registradas da TradeStation Technologies, Inc.
Uma das maiores tendências no comércio varejista na última década foi o aumento da popularidade do comércio automatizado. Neste tipo de negociação, também conhecida como execução automatizada de ordens, os sinais de compra e venda gerados por um sistema de negociação são executados automaticamente por uma plataforma conectada à conta corretora do comerciante. Isso permite o comércio livre de mãos, o que permite uma execução mais rápida, menos erros e a capacidade de trocar prazos mais curtos com estratégias de maior freqüência.
O algoritmo básico para a construção de sistemas de negociação usando a geração automática de código é mostrado abaixo na Fig. 1. Começa com um método para combinar diferentes elementos da estratégia de negociação. Esses elementos podem incluir vários indicadores técnicos, como médias móveis, estocásticos e assim por diante; diferentes tipos de pedidos de entrada e saída; e condições lógicas para entrar e sair do mercado.
Figura 1. Algoritmo básico para construção de estratégia automatizada.
Depois que os diferentes elementos são combinados em uma estratégia coerente, ele pode ser avaliado no mercado ou mercados de interesse. Isso requer dados de mercado - preços, volume, interesse aberto, etc. - para cada mercado. De um modo geral, você também teria um conjunto de objetivos de construção para ajudar a classificar ou marcar cada estratégia. Exemplos de objetivos de construção incluem várias medidas de desempenho, como o lucro líquido, redução, porcentagem de vencedores, fator de lucro e assim por diante. Estes podem ser declarados como requisitos mínimos, como um fator de lucro de pelo menos 2.0 ou como objetivos para maximizar, como maximizar o lucro líquido.
Base teórica da geração automática de código.
Conforme descrito acima, construir um sistema comercial usando a geração automática de código é essencialmente um problema de otimização. A combinação de elementos estratégicos que maximizam os objetivos de construção é tomada como a estratégia final. Alguns comerciantes argumentariam que os sistemas comerciais deveriam ser construídos com base em uma hipótese de comportamento ou ação do mercado. Se você tem uma boa hipótese de como os mercados funcionam, uma estratégia pode ser construída em torno dessa hipótese e testada. Se isso funciona, ele apóia a hipótese e justifica a negociação da estratégia.
Gerador de código de sistema padrão para TradeStation.
Esta seção descreve uma abordagem ad hoc para a geração automática de código em que um sistema comercial para a TradeStation gera automaticamente outros sistemas de negociação baseados em padrões para a TradeStation. O sistema AutoSystemGen procura um conjunto de regras de negociação, juntamente com os valores de parâmetros associados, que atendem a um conjunto específico de requisitos de desempenho.
Embora quase qualquer tipo de indicador ou lógica de negociação possa ser incluído no gerador do sistema comercial descrito aqui, para manter as coisas bastante simples, as regras dos sistemas gerados serão restritas aos padrões de preços. Cada regra de entrada de um sistema de negociação gerado terá a seguinte forma:
A chave para este processo é encontrar sistemas de negociação de candidatos. Um sistema pode consistir de uma e dez regras do formulário mostrado acima. As negociações são introduzidas no mercado se todas as regras forem verdadeiras, e os negócios são encerrados um certo número de barras mais tarde. Se isso fosse codificado como um sistema TradeStation tradicional, com um máximo de 10 regras, haveria 52 entradas. Isso faria para uma estratégia pesada.
O código para o sistema AutoSystemGen e suas funções relacionadas está disponível no Breakout Futures (breakoutfutures /) na página Free Downloads.
Por exemplo, considere o mercado de futuros de obrigações de tesouraria de 30 anos (símbolo US. P na TradeStation 8). O AutoSystemGen foi otimizado nos últimos 20 anos de preços de T-bond com a entrada OptStep aumentada de 1 para 10000. Isso significa que o sistema avaliou 10.000 sistemas de negociação diferentes. A otimização foi executada duas vezes, uma vez por trades longos e uma vez para negociações curtas. Foram utilizados os seguintes requisitos de desempenho: lucro líquido de pelo menos US $ 30.000, o pior caso de desconto no máximo de US $ 7500, pelo menos 200 negócios, porcentagem rentável de pelo menos 50% e fator de lucro de pelo menos 1,2. Em um computador dual core com o Vista, levou aproximadamente 10 minutos para executar cada otimização (10.000 sistemas por otimização).
Sistema 2332, US. P, 17/9/2007 12:23:00, Long Trades.
Lucro líquido = 53562.50, DD máximo = -7381.25, Num Trades = 250, Percentual de vitórias = 56.80, Prof factor = 1.631.
Var: EntNext (falso);
EntNext = Open [2] & gt; = Low [16] e.
Fechar [14] & lt; = Low [6] and.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 2 então.
Venda o próximo bar no mercado;
Sistema 5771, US. P, 17/9/2007 12:27:00, Long Trades.
Lucro líquido = 42145,00, DD máximo = -5733.75, Num Trades = 207, Percentagem de vitórias = 57,00, factor Prof = 1,631.
Var: EntNext (falso);
EntNext = High [7] & gt; = Low [19] e.
Fechar [20] & gt; = Fechar [5] e.
High [18] & gt; = Low [2] and.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 2 então.
Venda o próximo bar no mercado;
Sistema 7622, ​​EUA. P, 9/17/2007 12:29:00, Long Trades.
Lucro líquido = 59348.75, Max DD = -7222.50, Num Trades = 208, Percentual de vitórias = 60.58, Fator Prof. = 1.924.
Var: EntNext (falso);
EntNext = Low [2] & lt; = High [9] and.
Abra [11] & gt; = Abrir [18] e.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 3 então.
Venda o próximo bar no mercado;
Sistema 7718, US. P, 17/9/2007 12:29:00, Long Trades.
Lucro líquido = 35526.25, DD máximo = -6936.25, Num Trades = 292, Percentual de vitórias = 56.85, factor Prof = 1.418.
Var: EntNext (falso);
EntNext = Fechar [3] & gt; = High [19] and.
High [6] & lt; = Open [10] e.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 1 então.
Venda o próximo bar no mercado;
Sistema 6160, US. P, 17/9/2007 12:42:00, Short Trades.
Lucro líquido = 31277,50, DD máximo = -6846,25, Num Trades = 369, Percentual de vitórias = 51,76, Fator Prof. = 1,297.
Var: EntNext (falso);
EntNext = High [9] & gt; = Low [6] and.
Fechar [15] & gt; = Alto [8] e.
High [7] & lt; = Low [20] e.
Se EntNext então.
Venda curta barra seguinte no mercado;
Se BarsSinceEntry = 1 então.
Compre para cobrir a próxima barra no mercado;
A listagem para cada sistema inclui o número do sistema (correspondente à entrada OptStep), o símbolo do mercado, a data atual e se o sistema é apenas longo ou curto. A próxima linha contém algumas estatísticas de desempenho resumidas para ajudar na avaliação de cada sistema. Finalmente, o código do sistema é mostrado. Para avaliar os sistemas na TradeStation, o código entre as duas linhas de comentários () pode ser copiado e colado em uma estratégia no TradeStation e, em seguida, executado na janela do gráfico.
O último sistema no arquivo de saída é para um sistema de apenas curto-som (# 6160). Quando guardado na TradeStation como uma estratégia e aplicado ao mesmo gráfico de T-bond, a seguinte curva de equidade foi produzida:
Figura 3. Sistema de apenas curto prazo para títulos T, nos últimos 20 anos, com US $ 15 por negócio deduzido para custos de negociação, gerado pelo sistema AutoSystemGen.
Programação genética para geração automática de código.
A abordagem ad hoc descrita na seção anterior é simples, mas tem duas limitações: (1) as estratégias geradas aleatoriamente não convergem para os objetivos de construção e (2) o modelo do sistema de padrões é difícil de generalizar para estratégias mais complexas . Isso sugere que uma abordagem mais sofisticada seja necessária.
Um método para a geração automática de código que aborda essas duas preocupações é chamado de programação genética (GP), 1 que pertence a uma classe de técnicas chamadas algoritmos evolutivos. Algoritmos evolutivos e GP em particular foram desenvolvidos por pesquisadores em inteligência artificial baseados nos conceitos biológicos de reprodução e evolução. Um algoritmo GP "evolui" uma população de estratégias de negociação de uma população inicial de membros gerados aleatoriamente. Os membros da população competem uns contra os outros com base na sua "aptidão". Os membros do ajuste são selecionados como "pais" para produzir um novo membro da população, que substitui um membro mais fraco (menos adequado).
Reduz a necessidade de conhecimento de indicadores técnicos e design de estratégias. O algoritmo GP seleciona as regras de negociação individuais, indicadores e outros elementos da estratégia para você.
O processo de construção da regra permite uma complexidade considerável, incluindo regras comerciais não-lineares.
O processo GP elimina os elementos mais laboriosos e tediosos do processo de desenvolvimento da estratégia tradicional; ou seja, surgir uma nova idéia comercial, programá-la, verificar o código, testar a estratégia, modificar o código e repetir. Isso é feito automaticamente no GP.
O processo de GP é imparcial. Considerando que a maioria dos comerciantes desenvolveu vieses para ou contra indicadores específicos e / ou lógica de negociação, o GP é guiado apenas pelo que funciona.
Ao incorporar uma semântica de regras de negociação adequada, o processo de GP pode ser projetado para produzir regras de negociação logicamente corretas e código sem erros.
O processo GP geralmente produz resultados que não são únicos, mas não óbvios. Em muitos casos, essas gemas escondidas seriam quase impossíveis de encontrar de outra maneira.
Ao automatizar o processo de compilação, o tempo necessário para desenvolver uma estratégia viável pode ser reduzido de semanas ou meses a uma questão de minutos em alguns casos, dependendo do comprimento do arquivo de dados de preço de entrada e outras configurações de compilação.
A programação genética tem sido usada com sucesso em diversos campos, incluindo processamento de sinal e imagem, controle de processo, bioinformática, modelagem de dados, geração de código de programação, jogos de computador e modelagem econômica; veja, por exemplo, Poli et al. 2 Uma visão geral do uso de GP em finanças é fornecida por Chen. 3 Colin 4 foi um dos primeiros a explicar como usar o GP para otimizar combinações de regras para uma estratégia de negociação.
J. Koza. Programação genética. O MIT Press, Cambridge, MA. 1992.
R. Poli, W. B. Langdon e N. F. McPhee. Um guia de campo para programação genética. Publicado via lulu e disponível gratuitamente em gp-field-guide. uk, 2008. (Com contribuições de J. R. Koza).
Shu-Heng Chen (Editor). Algoritmos genéticos e programação genética em finanças computacionais. Kluwer Academic Publishers, Norwell, MA. 2002.
A. Colin. Algoritmos genéticos para modelagem financeira, Trading on the Edge. 1994, páginas 165-168. John Wiley & amp; Sons, Inc. Nova York.
Risto Karjalainen. Evolução das regras de negociação técnica para futuros S & amp; P 500, Regras de Negociação Avançadas, 2002, Páginas 345-366. Elsevier Science, Oxford, Reino Unido.
Jean-Yves Potvin, Patrick Soriano, Maxime Vallee. Gerando regras de negociação nos mercados de ações com programação genética. Computadores e Pesquisa de operações, Volume 31, edição 7, junho de 2004, páginas 1033-1047.
Massimiliano Kaucic. Investimento utilizando métodos evolutivos de aprendizagem e regras técnicas. European Journal of Operational Research, volume 207, edição 3, 16 de dezembro de 2010, páginas 1717-1727.
Algoritmo de construção usando programação genética.
Expandindo o algoritmo de compilação apresentado anteriormente (ver Fig. 1), um algoritmo mais detalhado é ilustrado abaixo na Fig. 4 com base na programação genética. As caixas sombreadas de cinza representam os dados de entrada, que incluem os dados de preços para o (s) mercado (s) de interesse, indicadores e tipos de pedidos no chamado conjunto de compilação e as opções e critérios de desempenho (objetivos de construção) selecionados pelo do utilizador.
Figura 4. Algoritmo de compilação para geração automática de código com programação genética.
O processo GP pode ser usado para desenvolver simultaneamente dois elementos de estratégia essenciais: condições de entrada e pedidos de entrada e saída. As condições de entrada são tipicamente representadas como estruturas de árvores, como mostrado abaixo na Fig. 5.
A chave para a evolução das ordens de entrada e saída usando programação genética é representar os diferentes tipos de pedidos de forma generalizada. Por exemplo, parar e limitar os preços de entrada podem ser representados da seguinte forma:
Embora a programação genética seja capaz de gerar estratégias de negociação com uma variedade considerável, é necessário começar com uma estrutura generalizada para as estratégias a serem seguidas. A estrutura de estratégia mostrada abaixo em pseudo-código fornece uma estrutura para estratégias de construção com base em condições de entrada e tipos de pedidos como os discutidos acima:
Entradas: N1, N2, N3, ...
Se a posição for plana e LongEntryCondition for verdade, então.
Ordem de entrada longa ...
Inicialize as ordens de saída longas, conforme necessário ...
Se a posição for plana e ShortEntryCondition for verdade, então.
Ordem de entrada curta ...
Inicialize ordens de saída curtas, conforme necessário ...
Se a posição é longa então.
Ordem de saída longa 1 ...
Ordem de saída longa 2 ...
Se a posição for curta, então.
Ordem de saída curta 1 ...
Ordem de saída curta 2 ...
[Saída opcional de fim de dia]
As estratégias começam com a lista de insumos. É fornecida uma entrada para qualquer parâmetro do indicador, comprimento do look-back do padrão de preços e quaisquer parâmetros exigidos pelas ordens de entrada e saída, como o comprimento de look-back para o ATR.
Para ilustrar o uso de programação genética para a geração automática de código na construção de estratégias, o programa Adaptrade Builder foi administrado em barras diárias de um mercado de futuros de índices de ações para uma pequena população e um número limitado de gerações. As métricas de desempenho escolhidas para orientar o processo foram o lucro líquido, o número de trades, o coeficiente de correlação, a significância estatística e a relação retorno / redução. Alvos específicos foram definidos para o número de negociações e a relação retorno / retirada. As outras métricas selecionadas foram maximizadas. A função de fitness foi uma média ponderada de termos para cada métrica.
Figura 6. Percentagem de membros da população com lucro líquido fora da amostra superior a US $ 1.000.
Da mesma forma, o lucro líquido médio da OOS aumentou após cinco e dez gerações, como mostrado na Figura 7. Observe que esses resultados são para o lucro líquido da OOS. Por definição, os dados fora da amostra não são usados ​​na compilação, então os resultados da OOS são imparciais; eles não se beneficiam de retrospectiva. Isso implica que o processo GP não só tende a melhorar os resultados na amostra em sucessivas gerações, o que é um efeito direto do algoritmo GP, mas os resultados da OOS também tendem a melhorar à medida que as estratégias são desenvolvidas. Isso indica uma compilação de alta qualidade.
Código de Estratégia EasyLanguage para a TradeStation.
Membro da população: 46.
Criado por: Adaptrade Builder versão 1.1.0.0.
Criado: 19/10/2010 2:19:52 PM.
Código do TradeStation para TS 6 ou posterior.
Arquivo de preço: C: \ TestData. txt.
Var: EntCondL (falso),
EntCondL = (Maior (Volume, NL1) & gt; = Menor (Volume, NL2)) ou (Volume & lt; Média (Volume, NL3));
Se MarketPosition = 0 e EntCondL, em seguida, comece.
Compre a próxima barra na XAverage (L, NBarEnL1) + EntFrL * ATREnL parar;
Se MarketPosition = 0 e EntCondS, em seguida, comece.
Vender curto barra seguinte no Mais alto (H, NBarEnS1) - EntFrS * AbsValue (Menor (L, NBarEnS2) - Menor (H, NBarEnS3)) parar;
SStop = Power (10, 10);
Se MarketPosition & gt; 0 então comece.
Se BarsSinceEntry & gt; = NBarExL então.
Venda o próximo bar no mercado;
Venda o próximo bar no EntryPrice + TargFrL * ATRTargL limite;
Se MarketPosition & lt; 0 então comece.
Se EntryPrice - C & gt; ATRFrTrailS * ATRTrailS então.
Se STrailOn então começar.
NewSStop = EntryPrice - TrailPctS * (EntryPrice - C) / 100 .;
SStop = MinList (SStop, NewSStop);
Se BarsSinceEntry & gt; = NBarExS então.
Compre para cobrir a próxima barra no mercado;
Se STrailOn então.
Compre para cobrir a próxima barra na parada SStop;
Construir sistemas de negociação através da geração automática de código é um tipo de otimização. A maioria dos comerciantes sistemáticos provavelmente está familiarizado com a otimização de parâmetros, em que as entradas para uma estratégia são otimizadas. Ao contrário da otimização de parâmetros, a geração automática de código otimiza a lógica de negociação da estratégia. No entanto, o risco de sobre-otimização, ou "excesso de ajuste", também é uma preocupação para a geração automática de código, assim como é para a otimização de parâmetros.
Para obter informações sobre software para estratégias de negociação de construção usando programação genética, clique aqui.
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.

Desenvolvendo estratégias de negociação de alto desempenho com programação genética.
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. Na verdade, a pesquisa mostrou que a rentabilidade das regras de negociação simples persistiu em mercados cambiais e outros mercados por um período de décadas. Mas, coincidentes com o advento do PC no final da década de 1980, tais estratégias simples começaram a falhar. A ampla disponibilidade de dados, ferramentas analíticas e poder de computação contribuiu, sem dúvida, para o aumento da eficiência dos mercados financeiros e complicou a busca de idéias comerciais lucrativas. 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. E não há garantia de que o resultado final produza os retornos de investimento necessários.
Os prazos de alongamento e o aumento do custo e risco de pesquisa estratégica obrigaram as empresas comerciais a explorar possibilidades de aceleração do processo R & D. Uma dessas abordagens é a Programação Genética.
Experiências iniciais com programação genética.
Cheguei a abordar a abordagem do GP na estratégia de investimento no final da década de 1990, quando comecei a trabalhar com Haftan Eckholdt, então chefe de neurociência na Yeshiva University, em Nova York. Haftan propôs a criação de estratégias comerciais aplicando o tipo de técnicas amplamente utilizadas para analisar conjuntos de dados volumosos e altamente complexos na pesquisa genética. Fiquei extremamente céptico com a idéia e passei os 18 meses seguintes, chutando os pneus muito, de fato, em nome de um investidor interessado. Embora os resultados de Haftan pareciam promissores, eu estava bastante certo de que eles eram o produto de uma chance aleatória e começaram a elaborar testes que demonstrariam isso.
Um dos desafios que desenvolvi foi criar conjuntos de dados em que séries de ações reais e sintéticas foram misturadas e administradas ao sistema avaliado. Para o olho humano (ou planilha do analista), as séries sintéticas eram indistinguíveis do real. Mas, de fato, eu tinha "plantado" alguns padrões dentro dos processos das ações sintéticas que os faziam funcionar de maneira diferente dos seus homólogos da vida real. Alguns dos padrões que criei foram bastante simples, como a introdução de um componente de deriva. Mas outros padrões foram mais matizados, por exemplo, usando um gerador de movimento Brownian fractal para induzir longa memória no processo de volatilidade do estoque.
Foi quando eu vi o sistema detectar e explorar os padrões enterrados profundamente dentro da série sintética para criar estratégias sensíveis e lucrativas que eu comecei a prestar atenção. Pouco tempo depois, Haftan e eu unimos forças para criar o que se tornou o Proteom Fund.
Que o Proteom conseguiu ser um testemunho não só da habilidade de Haftan como pesquisador, mas também de suas habilidades como programador e técnico. O processamento de tão grandes volumes de dados foi um tremendo desafio naquela época e exigiu um cluster de 50 cpu em rede e mantido com uma quantidade razoável de patch cable e cola. Nós abrigamos o cluster em um armazém infestado de ratos no Brooklyn que tinha uma visão muito agradável de Manhattan, mas não 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. Como você pode imaginar, reuniões com investidores foram uma experiência altamente imprevisível. Felizmente, o intelecto de Haftan foi acompanhado por suas imensas reservas de força e paciência e fomos capazes de atrair investimentos de vários investidores institucionais líderes.
A abordagem de programação genética para a construção de modelos comerciais.
A programação genética é uma metodologia algorítmica baseada em evolução que pode ser usada de maneira muito geral para identificar padrões ou regras dentro das estruturas de dados. O sistema GP é fornecido com um conjunto de instruções (tipicamente operadores simples, como adição e subtração), algumas observações de dados e uma função de aptidão para avaliar o quão bem o sistema é capaz de combinar as funções e os dados para atingir um objetivo específico.
No contexto da estratégia de negociação, as observações de dados podem incluir não só dados de preços, mas também volatilidade de preços, médias móveis e uma variedade de outros indicadores técnicos. A função de fitness poderia ser algo tão simples como o lucro líquido, mas poderia representar medidas alternativas de rentabilidade ou risco, com fatores como PL por comércio, taxa de ganhos ou redução máxima. Para reduzir o perigo de sobreposição, é costume limitar os tipos de funções que o sistema pode usar para operadores simples (+, -, /, *), expoentes e funções trigonométricas. O comprimento do programa também pode ser limitado em termos das linhas máximas permitidas de código.
Podemos representar o que está acontecendo usando um gráfico de árvore:
Neste exemplo, o sistema GP está combinando vários operadores simples com as funções trigonométricas Sin e Cos para criar um sinal que compreende uma expressão em duas variáveis, X e Y, que podem ser, por exemplo, preços de ações, médias móveis ou indicadores técnicos de impulso ou reversão média.
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. O desempenho do sistema é reavaliado usando a função de fitness e as mutações mais rentáveis ​​são mantidas para geração adicional.
Os modelos resultantes são muitas vezes altamente não-lineares e podem ser de forma muito geral.
Nos últimos quinze anos, houve enormes avanços no campo da programação genética, em termos de teoria e prática. Usando uma única CPU hiper-threaded, agora é possível que um sistema GP gere sinais a uma taxa muito mais rápida do que era possível no cluster do Proteom de 50 CPUs em rede. Um pesquisador pode desenvolver e avaliar dezenas de milhões de possíveis algoritmos de negociação com o espaço de poucas horas. Implementar uma estratégia cuidadosamente pesquisada e testada agora é viável em questão de semanas. Não há dúvida sobre o potencial do GP de produzir reduções dramáticas nos prazos e custos da R & amp; D. Mas isso funciona?
Para abordar essa questão, resumi abaixo os resultados de desempenho de um sistema daytrading desenvolvido por GP que comercializa nove mercados de futuros diferentes: petróleo bruto (CL), Euro (EC), E-Mini (ES), ouro (GC), óleo de aquecimento (HO), café (KC), gás natural (NG), notas de dez anos (TY) e obrigações (EUA). O sistema comercializa um único contrato em cada mercado individualmente, indo longo e curto várias vezes ao dia. Somente o período mais líquido em cada mercado é negociado, o que normalmente coincide com a sessão aberta, e as posições abertas são encerradas no final da sessão usando ordens de mercado. 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.
O sistema foi construído usando dados de barra de 15 minutos de janeiro de 2006 a dezembro de 2011 e testado fora de amostra de dados de janeiro de 2012 a maio de 2014. O intervalo de dados em amostra foi escolhido para cobrir períodos de estresse de mercado extremo, como bem como condições de mercado menos voláteis. Foi escolhido um longo período fora da amostra, quase metade do intervalo do período na amostra, para avaliar a robustez do sistema.
O teste fora da amostra foi "duplo-cego", o que significa que os dados não foram utilizados na construção dos modelos, nem o desempenho fora da amostra avaliado pelo sistema antes de qualquer modelo ser selecionado.
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.
(clique na tabela para uma visualização de definição mais alta)
A característica mais marcante da estratégia é a alta taxa de retornos ajustados ao risco, conforme medido pelo índice de Sharpe, que excede 5 em períodos de amostra e fora da amostra. Esta consistência é um reflexo do fato de que, enquanto os retornos líquidos caíram de uma média anual de mais de 29% na amostra para cerca de 20% no período de 2012, também a volatilidade da estratégia diminui de 5,35% para 3,86% em os respectivos períodos. A redução do risco no período fora da amostra também se reflete em níveis mais baixos de Valor em risco e Drawdown.
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.
No geral, o sistema parece não só ser altamente lucrativo, mas também extremamente robusto. 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. É razoável esperar que o desempenho fora da amostra possa ser melhorado ao permitir que os modelos sejam atualizados com dados mais recentes.
Benefícios e riscos da abordagem do GP para o desenvolvimento do sistema de negociação.
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? A preocupação mais óbvia é o risco de sobreposição. Ao permitir que o sistema desenvolva e teste milhões de modelos, há um risco distinto de que os sistemas resultantes possam estar muito condicionados sobre os dados na amostra e não conseguirão manter o desempenho diante de novas condições de mercado. É por isso que, é claro, mantemos uma quantidade substancial de dados fora da amostra, a fim de avaliar a robustez do sistema comercial. Mesmo assim, dada a enorme quantidade de modelos avaliados, continua a existir um risco significativo de sobreposição.
Outra desvantagem é que, devido à natureza do processo de modelagem, pode ser muito difícil de entender, ou explicar aos potenciais investidores, a "hipótese de mercado" subjacente a qualquer modelo específico. "Nós testamos e isso funciona" não é uma explicação particularmente esclarecedora para os investidores, que estão acostumados a apresentar um quadro teórico mais articulado ou uma tese de investimentos. Não ser capaz de explicar com precisão como um sistema ganha dinheiro é preocupante o suficiente nos bons tempos; Mas, em tempos ruins, durante uma redução prolongada, é provável que os investidores se agitem muito rapidamente, caso não existam explicações. Infelizmente, avaliar a questão de saber se um período de mau desempenho é temporário, ou o resultado de uma quebra no modelo, pode ser um processo complicado.
Finalmente, em comparação com outras técnicas de modelagem, os modelos GP sofrem de uma incapacidade de atualizar facilmente os parâmetros do modelo com base em novos dados à medida que se tornam disponíveis. Normalmente, como modelo GP será reconstruído a partir do zero, muitas vezes produzindo resultados muito diferentes a cada vez.
Apesar das muitas limitações da abordagem GP, as vantagens em termos de velocidade e custo de pesquisar e desenvolver sinais e estratégias comerciais originais tornaram-se cada vez mais atraentes.
Dado os vários êxitos bem documentados da abordagem do GP em campos tão diversos como a genética e a física, penso que uma posição apropriada a levar em relação às aplicações na pesquisa de mercado financeiro seria um otimismo cauteloso.

No comments:

Post a Comment