Sistema de negociação de programação genética
Esta página usa quadros, mas seu navegador não os suporta.
O GRAIL fornece diariamente sinais de negociação para uma seleção de mercados de derivativos, incluindo os contratos futuros S & P, Euro, Hang Seng, Dax e FTSE. Entre para saber mais sobre o nosso sistema de S & P, que gerou 385 pontos de lucro entre março de 2002 e outubro de 2003 (77,1% p. a.) durante as negociações em tempo real!
NOVO!! O Genetic System Builder cria sistemas de negociação robustos com o EasyLanguage TM totalmente divulgado no mercado da sua escolha. O software inclui gerenciamento de dinheiro e um tipo de Otimizador de Portfólio Genético. Indispensável para qualquer comerciante de sistemas: de iniciante a gestor de fundos de hedge! Demonstração grátis disponível.
Para visualizar os gráficos de ações dos sistemas de negociação modelados pelo GSB, clique aqui.
Nosso software de gerenciamento de dinheiro pode aumentar os lucros de um sistema comercial existente. Encomende o nosso relatório que irá mostrar-lhe em 8 passos fáceis, como implementar qualquer uma das seguintes estratégias de gestão de dinheiro / dimensionamento de posições no seu próprio sistema:% Margem,% Risco, Ótimo f, Diluído Optimal f, Critério Kelly, Kelly Diluído e% Volatilidade. (Todos os códigos TradeStation EasyLanguage TM incluídos)
Somos especializados em design, programação e testes de sistemas de negociação no TradeStation TM, Pascal, C ++ e Excel.
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 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 aptidão. Indivíduos com alto valor de aptidão têm uma chance maior de serem selecionados para reprodução e, assim, criar descendentes. Encontrar um & quot; bom & quot; A função fitness é um dos aspectos mais importantes do processo de desenvolvimento. É raro o caso de a primeira ideia de uma função de fitness já produzir grandes resultados, e definir um requer uma compreensão bastante profunda do domínio do problema. A lista a seguir contém algumas decisões de design necessárias:
Minimização versus maximização de valores de adequação Único objetivo versus multi-objetivo Normalização de valores de aptidão Atribuição de pesos a componentes individuais da função de aptidão.
Vamos analisar mais de perto 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 alvo típicas para maximizar poderiam ser o retorno total, o valor esperado, o tamanho médio dos negócios vencedores ou a taxa de acerto. As medidas-alvo típicas para minimizar poderiam ser o rebaixamento máximo, o número máximo de negociações perdedoras consecutivas ou a volatilidade da curva de capital. Uma situação comum é maximizar alguns e minimizar outros valores de aptidão ao mesmo tempo.
Único objetivo vs. multi-objetivo.
Uma função de fitness com um único objetivo tenta maximizar (ou minimizar) um único valor de fitness. Este valor de aptidão pode possivelmente ser o resultado de uma fórmula matemática que combina 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 me referir a tais "funções combinadas de aptidão física". como objetivo único, porque o valor final de adequação é um valor único. Em contraste, as funções de adequação multiobjetivo não tentam agregar várias medidas de destino em um único valor de adequação, mas trabalham diretamente no espaço de pesquisa multidimensional sem reduzir o número de dimensões. As funções de adequação multiobjetivo para o GP podem ser bastante complicadas de implementar, mas, pela minha experiência, elas podem realmente levar a resultados superiores em comparação com os objetivos únicos. Eu já mencionei duas dessas funções de fitness em um artigo anterior: o algoritmo genético de ordenação não-dominada (NSGA) e o algoritmo de resistência pareto evolucionária (SPEA), que eu considero ser muito poderoso. Esses algoritmos operam diretamente em uma "paisagem de fitness" multidimensional. sem reduzir a paisagem num "raio numérico de fitness" unidimensional como funções de aptidão combinadas de objetivo único. O leitor também deve estar ciente de que ambos os algoritmos, por seu design, predeterminam os operadores de seleção GP e de mutação. Implementações de trabalho para ambos os algoritmos podem ser encontradas na biblioteca do ECJ.
Normalização de valores de aptidão.
Às vezes é necessário normalizar valores de aptidão para um intervalo predeterminado. Este pode ser o caso, por exemplo, se existirem alguns ouliers que estejam muito longe dos outros valores de fitness. Se um operador de seleção proporcional de adequação for aplicado, esses valores discrepantes poderão facilmente dominar todos os outros, o que raramente é desejado. Uma alternativa seria usar valores de aptidão baseados em classificação, pois eles não sofrem de tal problema.
Outro problema é a diferença relativa nos tamanhos dos componentes de valor de aptidão envolvidos. Considere a seguinte função de aptidão:
Por estas razões (especialmente quando se usa uma função combinada de objetivo único), normalmente é necessária a normalização dos componentes individuais. Existem três alternativas diferentes:
Se se espera que todos os componentes na função de adequação tenham distribuições similares (ou seja, média e desvio padrão semelhantes), então uma normalização pode não ser necessária. Este raramente é o caso, no entanto. Outliers são, na verdade, um fenômeno comum.
2. Normalização de componentes de valor de aptidão com distâncias proporcionais.
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 favoreceu uma ordem reversa com o melhor componente de valor de fitness 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 escolha de operadores de seleção - pode ser desejado preservar as distâncias relativas entre os valores.
3. Normalização dos componentes do valor de fitness, primeiro ordenando todos os componentes de acordo com sua classificação.
Como no procedimento anterior, o melhor componente de valor de aptidão 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, informações relevantes sobre as distâncias relativas entre componentes de valor de aptidão perdem-se irrevogavelmente.
Armadilhas comuns.
Pela minha experiência, há algumas armadilhas comuns para os iniciantes em relação ao design das 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, é o montante de dinheiro gerado pela sua estratégia de negociação, não é? Acontece que essa 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 serem considerados:
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 comprar e manter tem a vantagem de ter custos de negociação muito baixos. Portanto, nessa situação, não é incomum que a estratégia de negociação de melhor desempenho simplesmente compre no início e mantenha até o final. As melhores estratégias de negociação evoluídas provavelmente terão nenhum a muito poucos negócios - o que é apenas conseqüente, mas ainda não é muito desejável. Essas estratégias de negociação não representam um caminho repetitivo para o sucesso. Eles basicamente apenas executam, evitando custos de negociação. Esteja ciente de que tais "estratégias de negociação preguiçosa" também pode implicar uma maior volatilidade do que você está preparado para aceitar. Isso ocorre porque eles simplesmente repetem a evolução dos preços de mercado devido a suas táticas de comprar e manter.
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. Adicionar pesos a cada componente de fitness também pode ser interessante.
A estratégia depende de poucas negociações vencedoras.
Um problema relacionado é evoluir estratégias que dependem fortemente de algumas negociações vencedoras muito selecionadas em comparação com muitos comércios perdedores. Teoricamente, esta é uma estratégia sólida, desde que o valor global esperado ainda seja positivo (veja mais abaixo). No entanto, é preciso ser muito cautelosos. Se as negociações vencedoras forem muito poucas, a estratégia pode não representar novamente um caminho repetitivo para o sucesso. Em outras palavras, a distribuição dos negócios vencedores e perdedores também é importante. Se você foi curto o Dow Jones Industrial Average (DJIA) antes da segunda-feira negra de 19 de outubro de 1987 você poderia ter feito uma fortuna. (O DJIA caiu 22,61% apenas naquele dia). Se você tiver apenas uma única negociação como essa em sua estratégia de backtested, ainda poderá compensar anos de pequenas perdas. Mas como um movimento desta magnitude ocorre estatisticamente, muito raramente você não pode confiar nele estrategicamente. (No entanto, você deve estar preparado para que isso aconteça do lado negativo, caso contrário, essa perda poderia efetivamente eliminá-lo.) Esteja ciente de que com a crescente frequência na ocorrência de falhas de flash, esse problema aumentou bastante do que diminuiu.
Outliers dominam na seleção proporcional à fitness.
Outro problema é a existência de outliers. Acontece com relativa frequência que alguns indivíduos são muito superiores a todos os outros indivíduos da geração que tendem a dominar todos os outros, embora não representem um ótimo global, mas apenas um local. No caso de operadores de seleção proporcional à aptidão em vez de operadores de seleção baseados em classificação, os outliers têm chances muito maiores de serem selecionados para reprodução. Repetir o processo evolucionário com a mesma semente aleatória (assumindo uma aplicação single-threaded sem condições de tempo de execução) irá, é claro, repetir o resultado, portanto recomenda-se re-executar com sementes aleatórias variadas.
Isso pode acontecer tanto com funções de adequação simples como multi-objetivo. Às vezes, nas funções de adequação multiobjetivo, a adequação de um indivíduo pode estar localizada no limite "& quot;" & quot; do cenário de fitness, com por exemplo um componente de fitness sendo o máximo de todos os valores e o outro sendo zero. Geralmente, é útil plotar a distribuição relativa dos valores de fitness para obter uma impressão.
Medidas de fitness sugeridas.
Esta é uma lista de medidas de fitness que eu pessoalmente considero vale a pena experimentar em combinação. Eu provavelmente começaria com a função de adequação de objetivo único, maximizando apenas o valor esperado. Mais tarde, quando a função de aptidão multi-objetivo estiver em vigor, adicionarei outros componentes de fitness também.
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 uma troca vencedora (perdida). Claro que o relacionamento p Win = 1,0 - p Perda deve segurar. O valor esperado deve ser um número positivo - se não for, o sistema certamente perderá dinheiro a longo prazo! Considero que esta é a medida mais direta e intuitiva a ser maximizada para todos os sistemas de negociação. (Para transações de soma zero, ou seja, operações que não geram nem perdem dinheiro, eu as considero como perdedoras, no entanto, como há quase sempre uma alternativa de "juros isentos de risco" à qual o dinheiro poderia ter sido atribuído .)
Minimizar o rebaixamento máximo: ninguém gosta de perder dinheiro nos mercados. Um problema comum é saber quando encerrar 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.
Maximizar o número de negociações: esta é uma tarefa complicada que os iniciantes podem não conseguir facilmente. Todo comércio tem suas taxas. Às vezes, o GP pode atribuir funções de alta aptidão a estratégias de negociação com apenas poucas (mas todas vencedoras) negociações. Tais estratégias são artefatos baseados em comportamento aleatório, pois não representam sucesso comercial significativo e reproduzível. Maximizar o número de negociações em combinação com o valor talvez esperado é uma contra-medida contra este problema. No entanto, esta medida pode ser problemática, uma vez que dá preferência a muitos negócios 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.
LABORATÓRIO DO SISTEMA DE NEGOCIAÇÃO
P. Por que o TSL é tão rápido?
R. A TSL usa um Mecanismo de Programação Genética de Alta Velocidade (GP) para chegar a uma excelente solução de Sistema Comercial em poucos minutos para a maioria dos Sistemas Diários. O GP é uma nova tecnologia e é um dos mais avançados algoritmos de Inteligência Artificial (AI) disponíveis hoje. O GP foi usado com sucesso em outros campos para resolver problemas difíceis e agora está disponível para permitir a Geração Automática do Sistema de Negociação.
P. Como sei que a TSL produzirá sistemas comerciais que funcionarão no futuro?
R. O GP da TSL usa Pressão de Parsimônia, Aleatorização, Teste Fora da Amostra e um Conjunto de Terminal imparcial para dar a maior chance possível de que um Sistema de Negociação robusto e contínuo possa resultar. Nenhum desenvolvedor ético dará garantias de que qualquer ativo ou estratégia de negociação será lucrativa.
P. Posso usar meus próprios dados, padrões ou indicadores?
Sim Fornecemos o formato específico necessário para criar seus próprios arquivos de dados ou usar seus próprios bancos de dados.
P. Eu tenho um sistema de negociação com parâmetros otimizáveis. A TSL irá otimizá-lo?
R. A TSL não otimizará seus parâmetros exatos no seu sistema de negociação. A otimização de parâmetros é um problema de dois gumes. TSL emerge novos sistemas de negociação, não apenas otimiza um sistema existente. Se você quiser simplesmente otimizar seu Sistema de Negociação existente, sugerimos que você use tecnologias mais antigas, como o Algoritmo Genético. No entanto, podemos colocar seus padrões e indicadores e até mesmo seus sinais de negociação no Conjunto TErinal de TSL e usar o GP para desenvolver novas equações e soluções. Isso está disponível para clientes existentes.
P. Eu preciso saber programar para usar o TSL?
A. Não, não mesmo. Na verdade, foi tomado muito cuidado para executar automaticamente as tarefas mais difíceis na Plataforma TSL, como o pré-processamento de dados. O conhecimento de programação irá ajudá-lo, no entanto, em projetos avançados adicionais com o TSL.
Q. Você tem uma versão de avaliação ou demonstração?
R. Existem várias demos flash que mostram o processo usado para gerar Trading Systems automaticamente, mas uma versão completa de demonstração não está disponível. Observe que não fornecemos períodos de teste gratuitos para nenhum dos nossos sistemas herdados, como o BigBlue ou o RMESA.
P. Preciso da TradeStation ™ para poder usar o TSL?
R. Não. Você pode usar o TradeStation ou um de nossos outros pré-processadores de dados para pré-processar automaticamente os dados usados no TSL. Você pode usar a TradeStation ou várias outras plataformas de negociação para negociar os sistemas gerados pela TSL. A interface da plataforma é realizada através da linguagem nativa da plataforma ou de uma interface DLL. Como a TSL produz Java, C, Assembly e várias outras linguagens de negociação, você pode pegar este código e usá-lo em seu próprio software ou plataforma de execução de pedidos. É claro que o C para o Easy Language Translator (CEL) traduz facilmente o código do sistema de negociação do GP diretamente para o Easy Language da TradeStation, portanto, a evolução da Trading Systems na TradeStation é muito simples. Para sua plataforma personalizada, haverá alguma programação adicional necessária.
P. Por quanto tempo o treinamento será necessário para que um Sistema de Negociação seja criado?
R. Os tempos de treinamento são mais longos com dados intradiários em comparação aos dados diários devido ao tamanho do arquivo de treinamento. Um sistema de dados diário típico com 20 anos (5000 barras) de dados levará alguns minutos para ser concluído em um computador desktop rápido. Sistemas intradiários levarão mais tempo com tempos de treinamento mais ou menos proporcionais ao número de barras usadas.
P. O meu processador atingirá o pico em 100% quando eu estiver treinando?
R. Não. Nossos testes mostram que seu processador deve funcionar a cerca de 50-60% ao treinar um sistema de negociação. Os processadores Multi Core mostrarão diferentes níveis de utilização do processador.
P. Eu quero criar um sistema de negociação usando alguns meses de dados intraday da eMini. isso é uma boa ideia?
R. Não. Se você quiser ajustar o TSL a alguns meses de dados, vá em frente. Embora os resultados na amostra possam ser grandes, os resultados fora da amostra serão ruins devido ao ajuste da curva. Você deve usar de 3 a 10 anos de dados intraday, no mínimo. Eu desenvolvi o RMESA em 14 anos de dados em 1996. Agora eu posso usar 23 anos de dados nos meus testes (1982-2005). Mais dados geralmente são melhores no design do Trading System. Não perca tempo com apenas alguns meses ou anos de dados, diários ou intradiários.
P. Quais barras de tamanho você recomendaria usar no TSL para sistemas intraday?
A. Você deve usar barras de 15 minutos ou maiores, a menos que você queira executar o treinamento durante a noite, então você pode usar barras menores, mas, novamente, use o máximo de dados possível ao criar seus arquivos de dados da Etapa 1.
P. Quais são os requisitos de hardware e software para o TSL?
A. 1280 x 1024 resolução de tela do Windows XP SP3. O instalador do Windows 7 está previsto para o início de 2010. Computador Intel P4 ou processador AMD equivalente (o processador mais rápido é melhor) 200 MB de espaço em disco (inclui Framework 2.0 se não instalado) RAM de 500 MB Mouse / Keyboard TradeStation 8.0 ou superior Dados de mercado para os mercados nos quais você deseja desenvolver um sistema de negociação em formatos de dados aceitos: CSI, MetaStock, AIQ, TradeStation, dados grátis da Internet, ASCII, TXT, CSV, CompuTrac, DowJones, FutureSource, TeleChart2000v3, TechTools, XML, Binário e Internet Dados de streaming.
Q. TSL é mais caro do que outras plataformas de desenvolvimento. Por quê?
R. A TSL usa uma Indução Linear Automática de Código de Máquina muito avançada com um Mecanismo de Programação Genética que custava muito para ser produzido. A plataforma TSL vem produzindo sistemas de negociação há vários anos, mas ainda não houve, nem existe atualmente qualquer outra plataforma de Programação Genética que produza automaticamente código de sistema de negociação e que tenha os recursos do TSL. Esses recursos simplesmente não estão disponíveis em nenhuma outra plataforma. Todos esses elementos únicos exigiam esforços substanciais de programação e eram caros de criar. Além disso, o comprador da plataforma TSL se torna essencialmente um desenvolvedor de sistema de negociação. O custo interno para desenvolver recursos desse nível, ou para criar manualmente a quantidade e a qualidade dos sistemas disponíveis com o TSL, seria substancialmente mais caro do que o preço de compra do TSL. Então, o que você gostaria de fazer: passar anos desenvolvendo sistemas de negociação usando métodos mais antigos e menos eficientes, ou usar um pacote moderno e existente que faça isso para você em uma fração do tempo? No geral, os desenvolvedores gastam muito tempo e dinheiro tentando desenvolver sistemas manualmente ou gastam consideravelmente menos dinheiro e compram uma plataforma existente capaz de produzir sistemas de negociação agora! A plataforma escolhida é o Trading System Lab.
Sistema de negociação de programação genética
Criando um sistema de negociação dentro do Trading System Lab.
O Trading System Lab gerará automaticamente Trading Systems em qualquer mercado em poucos minutos usando um programa de computador muito avançado conhecido como AIMGP (Indução Automática do Código de Máquina com Programação Genética). A criação de um sistema de negociação dentro do Trading 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 deseja trabalhar. A TSL aceita dados CSI, MetaStock, AIQ, TradeStation, Internet grátis, ASCII, TXT, CSV, CompuTrac, DowJones, FutureSource, TeleChart2000v3, TechTools, XML, Binário e Internet Streaming. Em segundo lugar, o Trading System Generator (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, relacionamentos entre mercados ou dados fundamentais no TSL. Em terceiro lugar, o Trading System evoluído é formatado para produzir novos sinais do Trading System a partir da TradeStation ™ ou de muitas outras plataformas de negociação. O TSL irá escrever automaticamente Easy Language, Java, Assembler, código C, código C # e WealthLab Script Language. O Sistema de Negociação pode então ser negociado manualmente, negociado através de um corretor ou negociado automaticamente. Você pode criar o Sistema de Negociação sozinho ou nós podemos fazer isso por você. Então, você ou seu corretor podem negociar o sistema manualmente ou automaticamente.
O Programa Genético do Trading System Lab contém vários recursos que reduzem a possibilidade de ajuste de curva ou a produção de um Sistema de Negociação que não continua a funcionar no futuro. Primeiro, os Trading Systems evoluídos têm seu tamanho reduzido ao menor tamanho possível através do que é chamado de pressão de parcimônia, a partir do conceito de comprimento de descrição mínima. Assim, o Sistema de Negociação resultante é o mais simples possível e geralmente se acredita que quanto mais simples for o Sistema de Negociação, melhor será o seu desempenho 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 ótimas. A aleatoriedade é introduzida não apenas nas combinações do material genético usado nos Trading Systems evoluídos, mas também em Parsimony Pressure, Mutation, Crossover e outros parâmetros GP de nível superior. O teste Fora da Amostra é realizado enquanto o treinamento está em andamento com as informações estatísticas apresentadas nos testes In Sample e Out of Sample Trading System. Os logs de execução são apresentados ao usuário para os dados Treinamento, Validação e Fora da 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 Fora da Amostra em comparação com o teste Na Amostra 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. Por fim, o Conjunto de Terminais é cuidadosamente escolhido de modo a não influenciar excessivamente a seleção do material genético inicial em relação a qualquer tendência ou sentimento específico do mercado.
A TSL não inicia sua execução com um Sistema de Negociação predefinido. Na verdade, apenas o Input Set e uma seleção de modos de entrada de mercado ou modos, para pesquisa e atribuição automática de entrada, são feitos inicialmente. Um padrão ou comportamento indicador que pode ser considerado 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. Este é um afastamento radical do desenvolvimento do Trading System gerado manualmente.
Um Sistema de Negociação é um conjunto lógico de instruções que informa ao comerciante quando comprar ou vender um mercado em particular. Estas instruções raramente requerem intervenção de um profissional. Os Sistemas de Negociação podem ser negociados manualmente, observando as instruções de negociação em uma tela de computador, ou podem ser negociados permitindo que o computador entre no mercado automaticamente. Ambos os métodos estão em uso generalizado hoje. Há mais administradores profissionais de dinheiro que se consideram comerciantes "Sistemáticos ou Mecânicos" do que aqueles que se consideram "discricionários", e o desempenho dos administradores de fundos sistemáticos é geralmente superior ao dos gerentes de dinheiro discricionários. Estudos têm mostrado que as contas de negociação geralmente perdem dinheiro com mais frequê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 corretoras de commodities, no entanto, as corretoras de ações e ações estão cada vez mais conscientes dos benefícios através do uso de Sistemas de Negociação e algumas começaram a oferecer Sistemas de Negociação aos seus clientes de varejo.
A maioria dos gestores de fundos mútuos já está usando algoritmos de computador sofisticados para orientar suas decisões sobre o que "estoque a escolher" ou que "rotação setorial" é a favor. Computadores e algoritmos se tornaram mainstream no investimento e esperamos que essa tendência continue enquanto os investidores mais experientes em informática continuam a permitir que parcelas de seu dinheiro sejam gerenciadas pela Trading Systems para reduzir o risco e aumentar os retornos. As enormes perdas experimentadas pelos investidores que participam na compra e manutenção de ações e fundos mútuos como o mercado de ações derretido nos últimos anos está promovendo esse movimento no sentido de uma abordagem mais disciplinada e lógica para o investimento no mercado de ações. O investidor médio percebe que atualmente ele 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 aeronaves que usamos para o transporte, os equipamentos 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 "atirar nos quadris" em suas decisões sobre "o que" ações ou fundo mútuo para comprar ou vender e esperar ganhar dinheiro? Finalmente, o investidor médio tornou-se cauteloso com os conselhos e informações encaminhados por corretores inescrupulosos, contadores, diretores de empresas e consultores financeiros.
Nos últimos 20 anos, matemáticos e desenvolvedores de software buscaram indicadores e padrões nos mercados de ações e commodities em busca de informações que apontassem para a direção do mercado. Esta informação pode ser usada para melhorar o desempenho dos Sistemas de Negociação. Geralmente este processo de descoberta é realizado através de uma combinação de tentativa e erro e mais sofisticada "Data Mining". Normalmente, o desenvolvedor levará semanas ou meses processando os números para produzir um Sistema de Negociação em potencial. Muitas vezes, este Sistema de Negociação não terá um bom desempenho quando realmente usado no futuro, devido ao que é chamado de "ajuste de curva". Ao longo dos anos tem havido muitos Trading Systems (e empresas de desenvolvimento de Trading System) que vêm e vão como seus sistemas falharam em negociação ao vivo. Desenvolver Sistemas Comerciais que continuem a atuar no futuro é difícil, mas não impossível de realizar, embora nenhum desenvolvedor ético ou gestor de dinheiro dê uma garantia incondicional de que qualquer Sistema de Negociação, ou mesmo qualquer ação, título ou fundo mútuo, continuará. para produzir lucros para o futuro para sempre.
O que levou semanas ou meses para o desenvolvedor do Trading System produzir no passado pode agora ser produzido em minutos com o 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 utiliza 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. Observe que apenas algumas entradas serão realmente usadas ou necessárias, resultando em estruturas de estratégia geralmente simples e 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 que não estamos simplesmente executando uma otimização de força bruta de indicadores existentes procurando por 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" os 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 avança em direção a um Sistema de Negociação "geneticamente modificado". O resultado é que um excelente Sistema de Negociação pode ser gerado em poucos minutos em 20 a 30 anos de dados diários de mercado em praticamente qualquer mercado.
Nos últimos anos, tem havido várias abordagens para a otimização do Sistema de Negociação que empregam o "Algoritmo" Genético menos poderoso. Os Programas Genéticos (GPs) são superiores aos Algoritmos Genéticos (GA's) por várias razões. Primeiro, os GP's convergem em uma solução a uma taxa exponencial (muito rápida e ficando mais rápida) enquanto os Algoritmos Genéticos convergem a uma taxa linear (muito mais lenta e não ficando mais rápida). Em segundo lugar, as GP's geram realmente um código de máquina do Sistema de Negociação que combinava o material genético (indicadores, padrões, dados entre mercados) de maneiras únicas. Essas combinações exclusivas podem não ser intuitivamente óbvias e não exigem 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. Os GAs, por outro lado, simplesmente procuram soluções ótimas à medida que progridem ao longo da faixa 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 de criação do Trading System da GP de vários comprimentos, usando genomas de tamanho variável, modificará o comprimento do Sistema de Negociação através do que é chamado crossover 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. Os GA's usam apenas blocos de instrução de tamanho fixo, fazendo uso somente de crossover homólogo e não produzem códigos de Sistema de negociação de comprimento variável, nem descartarão um indicador ou padrão ineficiente tão facilmente quanto um GP. Finalmente, os Programas Genéticos são um avanço recente no domínio do aprendizado de máquina, 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, as GPs incluem recursos muito mais rápidos e robustos, tornando a GP a melhor escolha para a produção da 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 do mercado financeiro no mundo.
O Algoritmo de Programação Genética, o Simulador de Negociação e os Motores de Fitness usados na TSL levaram mais de 8 anos para serem produzidos.
O Trading System Lab é o resultado de anos de trabalho árduo de uma equipe de engenheiros, cientistas, programadores e traders, e acreditamos que representa a tecnologia mais avançada disponível atualmente para a negociação nos mercados.
Seleção Natural: Algoritmo Genético para Otimização de Sistemas e Programação Genética.
O Evo 2 é a nossa biblioteca avançada de algoritmos genéticos que incorpora o que há de mais recente no design de algoritmos genéticos, como processos biologicamente idênticos, comutadores epigenéticos, recozimento simulado, prevenção de consanguinidade de Westermarck, recombinação limitada por idade e muito mais.
O algoritmo Evo 2 não se baseia no design GA padrão "single cromossomo".
O Evo 2 resolve rapidamente problemas de otimização multivariada e escala bem com a complexidade. O algoritmo Evo 2 foi projetado para programação genética (criação autônoma de sistemas de negociação), otimização do sistema de negociação e otimização de portfólio. O Evo 2 permite que os desenvolvedores criem otimizações de sistema de negociação multivariadas com facilidade.
Genoma e Algoritmo Bio-Idênticos.
Evo 2 não é apenas bio-inspirado, mas é bio-idêntico em muitos aspectos. O Evo 2 simula todos os processos naturais, desde a seleção do parceiro até o empacotamento do DNA e a completa meiose. A maioria dos algoritmos genéticos padrão negligenciam a realização das múltiplas etapas da meiose que são de vital importância para a variação genética, uma variável crucialmente importante para evitar ótimos locais.
Durante a prófase, os cromossomos fazem sinapses e uma pequena quantidade de DNA é trocada entre os cromossomos homólogos através de um processo conhecido como "crossing over". A parte crítica da prófase é o alinhamento das tetrads em pares homólogos. O algoritmo Evo 2 garante que os homólogos sejam criados apenas a partir de cromossomos sexuais não relacionados.
Metáfase e Anáfase.
Metáfase e anáfase são as fases em que muita variação é incorporada ao genoma; no entanto, a maioria dos algoritmos genéticos deixa completamente de lado esses passos. O Evo 2 simula ambas as fases completamente e com precisão.
Nenhuma endogamia permitida.
A maioria dos algoritmos genéticos padrão são "sopa inato", tecnicamente falando. A endogamia reduz a variação genética, o que é suficiente dizer, impede que os sistemas evoluam e se adaptem ao seu ambiente. Nos AGs padrão, isso significa que um sistema pode ter mais probabilidade de ficar preso em ótimos locais. Embora a natureza tenha pelo menos três mecanismos para evitar a endogamia, a maioria dos algoritmos genéticos não consegue resolver esse problema.
O primeiro método: Impedir que a prole se reproduza. A endogamia resulta em aumento da homozigose, o que pode aumentar as chances de os filhos serem afetados por traços recessivos ou deletérios.
O segundo mecanismo: afastar os jovens do sexo masculino, a fim de evitar o incesto de acasalamento entre irmãos.
O terceiro mecanismo: o efeito Westermarck. Este é um efeito psicológico através do qual indivíduos que são criados em grande proximidade durante a infância tornam-se insensíveis à atração sexual posterior.
A consequência final da endogamia é a extinção de espécies devido à falta de diversidade genética. A chita, uma das espécies mais endogâmicas da Terra, é um excelente exemplo. E também acontece de estar em extinção. Vinte mil anos atrás, as chitas percorriam toda a África, Ásia, Europa e América do Norte. Cerca de 10 mil anos atrás, devido às mudanças climáticas, todas, exceto uma espécie, foram extintas. Com a drástica redução em seus números, os parentes próximos foram forçados a procriar, e a chita se tornou geneticamente endogâmica, o que significa que todas as chitas estão intimamente relacionadas.
Embora a natureza proíba endogamia, quase todos os algoritmos genéticos simulados por computador ignoram esse problema.
Interruptores Epigenéticos.
A teoria epigenética descreve como as mudanças na expressão gênica podem ser causadas por outros mecanismos além das mudanças na seqüência de dna subjacente, temporariamente ou através de múltiplas gerações, influenciando uma rede de interruptores químicos dentro das células coletivamente conhecidas como epigenoma. O Evo 2 pode simular chaves epigenéticas para permitir que o sistema seja temporariamente penalizado por ações como ser muito ganancioso ou avesso ao risco.
Recozimento simulado.
Recozimento simulado é uma metaheurística probabilística para o problema de otimização global de localizar uma boa aproximação ao ótimo global de uma dada função em um grande espaço de busca. É frequentemente usado quando o espaço de pesquisa é discreto. Para certos problemas, o recozimento simulado pode ser mais eficiente do que a enumeração exaustiva.
Árvore genealógica.
O Evo 2 pode guardar informações genealógicas para cada genoma, para que os usuários possam rever a progressão do algoritmo genético para ver como certos genes evoluíram ao longo do tempo.
Visualizador de Karyogram.
O Evo 2 apresenta um cariograma embutido, que permite a visualização de genomas enquanto os algoritmos genéticos estão evoluindo. O cariograma pode ser personalizado para exibir informações de genealogia para genomas específicos por meio de um menu de contexto.
Aplicações do Evo 2.
O Evo 2 pode ser usado no cliente ou no servidor para programação genética (criação autônoma de sistemas de negociação), otimização do sistema de negociação, otimização de portfólio, alocação de ativos e aplicativos não relacionados a financiamento, incluindo mas não limitado a criatividade artificial, design automatizado, bioinformática. , cinética química, quebra de código, engenharia de controle, modelos Feynman-Kac, filtragem e processamento de sinais, aplicações de programação, engenharia mecânica, otimização estocástica e problemas de programação.
Exemplos de programação genética.
Os exemplos de programação do TradeScript mostram aos desenvolvedores como criar modelos de programação genética capazes de fazer o teste reverso e otimizar estratégias. A documentação de programação pode ser baixada aqui.
Sistema de negociação de programação genética
Se você ainda está procurando uma vantagem nos mercados, os sistemas de negociação automatizados são a melhor maneira de obtê-lo. Saber mais.
Direitos autorais (c) 2010 Adaptrade Software. Todos os direitos reservados.
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, UMA VEZ QUE AS COMERCIALIZAÇÕES NAO SÃO REALMENTE EXECUTADAS, OS RESULTADOS PODEM TER COMPENSADO OU SUPERIOR AO IMPACTO, SE ALGUM, DE DETERMINADOS FATORES DE MERCADO, COMO A 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Á SENDO FEITA QUE QUALQUER CONTA PODERÁ OU POSSIBILITAR LUCROS OU PERDAS SIMILARES AOS APRESENTADOS.
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 da negociação automatizada. Neste tipo de negociação, também conhecido 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 de corretagem do negociante. Isso permite a troca de mãos livres, o que permite uma execução mais rápida, menos erros e a capacidade de negociar prazos mais curtos com estratégias de frequência mais alta.
O algoritmo básico para a construção de sistemas de negociação usando geração automática de código é mostrado abaixo na Figura 1. Ele 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 ordens 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, ela pode ser avaliada no mercado ou nos mercados de interesse. Isso exige dados de mercado - preços, volume, juros em aberto, etc. - para cada mercado. De um modo geral, você também teria um conjunto de metas de compilação para ajudar a classificar ou classificar cada estratégia. Exemplos de metas de construção incluem várias medidas de desempenho, como lucro líquido, redução, porcentagem de vencedores, fator de lucro e assim por diante. Estes poderiam ser definidos como requisitos mínimos, como um fator de lucro de pelo menos 2.0, ou como objetivos a serem maximizados, como a maximização do lucro líquido.
Base Teórica da Geração Automática de Código.
Como descrito acima, construir um sistema de negociação usando geração automática de código é essencialmente um problema de otimização. A combinação de elementos de estratégia que maximiza as metas de construção é considerada a estratégia final. Alguns traders objetariam que os sistemas de negociação deveriam ser construídos com base em uma hipótese de comportamento ou ação de mercado. Se você tem uma boa hipótese sobre como os mercados funcionam, uma estratégia pode ser construída em torno dessa hipótese e testada. Se funcionar, suporta a hipótese e justifica a negociação da estratégia.
Gerador de código de sistema padrão para a TradeStation.
Esta seção descreve uma abordagem ad hoc para geração automática de código na qual um sistema de negociação para a TradeStation gera automaticamente outros sistemas de negociação baseados em padrões para a TradeStation. O sistema AutoSystemGen procura por um conjunto de regras de negociação, junto com os valores de parâmetros associados, que atendam a um conjunto especificado de requisitos de desempenho.
Embora quase qualquer tipo de indicador ou lógica de negociação possa ser incluído no gerador do sistema de negociação descrito aqui, para manter as coisas relativamente simples, as regras dos sistemas gerados serão restritas a padrões de preços. Cada regra de entrada de um sistema de negociação gerado terá o seguinte formato:
A chave para esse processo é encontrar sistemas de negociação candidatos. Um sistema pode consistir de uma a dez regras da forma mostrada acima. Negociações são entradas no mercado se todas as regras forem verdadeiras, e negociações são feitas depois de um certo número de barras. Se isso fosse codificado como um sistema tradicional da TradeStation, com um máximo de 10 regras, haveria 52 entradas. Isso criaria uma estratégia incômoda.
O código para o sistema AutoSystemGen e suas funções relacionadas está disponível em Breakout Futures (breakoutfutures /) na página Free Downloads.
Como exemplo, considere o mercado futuro de títulos de 30 anos do Tesouro (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 para negociações longas e outra para operações a descoberto. Os seguintes requisitos de desempenho foram utilizados: lucro líquido de pelo menos US $ 30.000, perda do pior caso não superior a US $ 7500, pelo menos 200 negociações, percentual lucrativo de pelo menos 50% e fator de lucro de pelo menos 1,2. Em um computador dual core com o Vista, foram necessários aproximadamente 10 minutos para executar cada otimização (10.000 sistemas por otimização).
Sistema 2332, @ US. P, 9/17/2007 12:23:00, Long Trades.
Lucro Líquido = 53562,50, Máximo DD = -7381,25, Número de Negociações = 250, Percentual de Vitórias = 56,80, Prof fator = 1,631.
Var: EntNext (false);
EntNext = Open [2] & gt; = Baixo [16] e.
Fechar [14] & lt; = Baixo [6] e.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 2 então.
Vender próxima barra no mercado;
System 5771, @ US. P, 9/17/2007 12:27:00, Long Trades.
Lucro Líquido = 42145,00, Máx. DD = -5733,75, Número de Negociações = 207, Percentual de Vitórias = 57,00, Prof fator = 1,631.
Var: EntNext (false);
EntNext = Alto [7] & gt; = Baixo [19] e.
Fechar [20] & gt; = Fechar [5] e.
Alto [18] & gt; = Baixo [2] e.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 2 então.
Vender próxima barra no mercado;
Sistema 7622, @ US. P, 9/17/2007 12:29:00, Long Trades.
Lucro Líquido = 59348,75, DD Máximo = -7222,50, Número de Negociações = 208, Percentual de Vitórias = 60,58, Prof fator = 1,924.
Var: EntNext (false);
EntNext = Baixo [2] & lt; = Alto [9] e.
Abra [11] & gt; = Abrir [18] e.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 3 então.
Vender próxima barra no mercado;
Sistema 7718, @ US. P, 9/17/2007 12:29:00, Long Trades.
Lucro Líquido = 35526,25, DD Máximo = -6936,25, Número de Negociações = 292, Percentual de Vitórias = 56,85, fator Prof = 1,418.
Var: EntNext (false);
EntNext = Fechar [3] & gt; = Alta [19] e.
Alta [6] & lt; = Abrir [10] e.
Se EntNext então.
Compre o próximo bar no mercado;
Se BarsSinceEntry = 1 então.
Vender próxima barra no mercado;
Sistema 6160, @ US. P, 9/17/2007 12:42:00, Curtas Negociações.
Lucro Líquido = 31277,50, DD Máximo = -6846,25, Número de Negociações = 369, Percent Wins = 51,76, Prof fator = 1,297.
Var: EntNext (false);
EntNext = Alto [9] & gt; = Baixo [6] e.
Fechar [15] & gt; = Alta [8] e.
Alta [7] & lt; = Baixa [20] e.
Se EntNext então.
Vender curto próximo bar no mercado;
Se BarsSinceEntry = 1 então.
Compre para cobrir a próxima barra no mercado;
The listing for each system includes the system number (corresponding to the OptStep input), market symbol, current date, and whether the system is long-only or short-only. The next line contains a few summary performance statistics to help in evaluating each system. Finally, the system code is shown. To evaluate the systems in TradeStation, the code between the two comment lines ( ) can be copied and pasted into a strategy in TradeStation, then run in the chart window.
The last system in the output file is for a short-only system (#6160). When saved in TradeStation as a strategy and applied to the same T-bond chart, the following equity curve was produced:
Figure 3. Short-only system for T-bonds, last 20 years, with $15 per trade deducted for trading costs, generated by system AutoSystemGen.
Genetic Programming for Automatic Code Generation.
The ad hoc approach described in the previous section is simple but has two limitations: (1) the randomly generated strategies don’t converge towards the build goals, and (2) the template of the pattern system is difficult to generalize to more complex strategies. This suggests a more sophisticated approach is needed.
A method for automatic code generation that addresses both these concerns is called genetic programming (GP), 1 which belongs to a class of techniques called evolutionary algorithms. Evolutionary algorithms and GP in particular were developed by researchers in artificial intelligence based on the biological concepts of reproduction and evolution. A GP algorithm “evolves” a population of trading strategies from an initial population of randomly generated members. Members of the population compete against each other based on their “fitness.” The fitter members are selected as “parents” to produce a new member of the population, which replaces a weaker (less fit) member.
Reduces the need for knowledge of technical indicators and strategy design. The GP algorithm selects the individual trading rules, indicators, and other elements of the strategy for you.
The rule construction process allows for considerable complexity, including nonlinear trading rules.
The GP process eliminates the most labor intensive and tedious elements of the traditional strategy development process; namely, coming up with a new trading idea, programming it, verifying the code, testing the strategy, modifying the code, and repeating. This is all done automatically in GP.
The GP process is unbiased. Whereas most traders have developed biases for or against specific indicators and/or trading logic, GP is guided only by what works.
By incorporating proper trading rule semantics, the GP process can be designed to produce logically correct trading rules and error-free code.
The GP process often produces results that are not only unique but non-obvious. In many cases, these hidden gems would be nearly impossible to find any other way.
By automating the build process, the time required to develop a viable strategy can be reduced from weeks or months to a matter of minutes in some cases, depending on the length of the input price data file and other build settings.
Genetic programming has been successfully used in a variety of fields, including signal and image processing, process control, bioinformatics, data modeling, programming code generation, computer games, and economic modeling; see, for example Poli et al. 2 An overview of using GP in finance is provided by Chen. 3 Colin 4 was one of the first to explain how to use GP for optimizing combinations of rules for a trading strategy.
J. Koza. Programação Genética. The MIT Press, Cambridge, MA. 1992.
R. Poli, W. B. Langdon, and N. F. McPhee. A field guide to genetic programming. Published via lulu and freely available at gp-field-guide. uk, 2008. (With contributions from J. R. Koza).
Shu-Heng Chen (Editor). Genetic Algorithms and Genetic Programming in Computational Finance. Kluwer Academic Publishers, Norwell, MA. 2002.
A. Colin. Genetic algorithms for financial modeling, Trading on the Edge. 1994, Pages 165-168. John Wiley & amp; Sons, Inc. New York.
Risto Karjalainen. Evolving technical trading rules for S&P 500 futures, Advanced Trading Rules, 2002, Pages 345-366. Elsevier Science, Oxford, UK.
Jean-Yves Potvin, Patrick Soriano, Maxime Vallee. Generating trading rules on the stock markets with genetic programming. Computers & Operations Research, Volume 31, Issue 7, June 2004, Pages 1033-1047.
Massimiliano Kaucic. Investment using evolutionary learning methods and technical rules. European Journal of Operational Research, Volume 207, Issue 3, 16 December 2010, Pages 1717-1727.
A Build Algorithm Using Genetic Programming.
Expanding on the build algorithm presented previously (see Fig. 1), a more detailed algorithm is illustrated below in Fig. 4 based on genetic programming. The gray-shaded boxes represent the input data, which includes the price data for the market(s) of interest, the indicators and order types in the so-called build set, and the options and performance criteria (build goals) selected by the user.
Figure 4. Build algorithm for automatic code generation with genetic programming.
The GP process can be used to evolve two essential strategy elements simultaneously: entry conditions and orders for entry and exit. The entry conditions are typically represented as tree structures, as shown below in Fig. 5.
The key to evolving entry and exit orders using genetic programming is representing the different types of orders in a generalized fashion. For example, stop and limit entry prices can be represented as follows:
While genetic programming is capable of generating trading strategies with considerable variety, it’s necessary to start with a generalized structure for the strategies to follow. The strategy structure shown below in pseudo-code provides a framework for building strategies based on entry conditions and order types like those discussed above:
Inputs: N1, N2, N3, …
If position is flat and LongEntryCondition is true then.
Long entry order…
Initialize long exit orders as necessary…
If position is flat and ShortEntryCondition is true then.
Short entry order…
Initialize short exit orders as necessary…
If position is long then.
Long exit order 1…
Long exit order 2…
If position is short then.
Short exit order 1…
Short exit order 2…
[Optional end-of-day exit]
The strategies start with the list of inputs. An input is provided for any indicator parameter, price pattern look-back length, and any parameters required by the entry and exit orders, such as the look-back length for the ATR.
To illustrate using genetic programming for automatic code generation in strategy building, the program Adaptrade Builder was run on daily bars of a stock index futures market for a small population and a limited number of generations. The performance metrics chosen to guide the process were the net profit, number of trades, correlation coefficient, statistical significance, and the return/drawdown ratio. Specific targets were set for the number of trades and the return/drawdown ratio. The other selected metrics were maximized. The fitness function was a weighted average of terms for each metric.
Figure 6. Percentage of population members with out-of-sample net profit greater than $1,000.
Similarly, the average OOS net profit of the population increased after five and 10 generations, as shown in Fig. 7. Note that these results are for the OOS net profit. By definition, the out-of-sample data is not used in the build, so OOS results are unbiased; they don’t benefit from hindsight. This implies that the GP process not only tends to improve the in-sample results over successive generations, which is a direct effect of the GP algorithm, but the OOS results also tend to improve as the strategies are evolved. This indicates a high quality build.
Criando um sistema de negociação dentro do Trading System Lab.
O Trading System Lab gerará automaticamente Trading Systems em qualquer mercado em poucos minutos usando um programa de computador muito avançado conhecido como AIMGP (Indução Automática do Código de Máquina com Programação Genética). A criação de um sistema de negociação dentro do Trading 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 deseja trabalhar. A TSL aceita dados CSI, MetaStock, AIQ, TradeStation, Internet grátis, ASCII, TXT, CSV, CompuTrac, DowJones, FutureSource, TeleChart2000v3, TechTools, XML, Binário e Internet Streaming. Em segundo lugar, o Trading System Generator (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, relacionamentos entre mercados ou dados fundamentais no TSL. Em terceiro lugar, o Trading System evoluído é formatado para produzir novos sinais do Trading System a partir da TradeStation ™ ou de muitas outras plataformas de negociação. O TSL irá escrever automaticamente Easy Language, Java, Assembler, código C, código C # e WealthLab Script Language. O Sistema de Negociação pode então ser negociado manualmente, negociado através de um corretor ou negociado automaticamente. Você pode criar o Sistema de Negociação sozinho ou nós podemos fazer isso por você. Então, você ou seu corretor podem negociar o sistema manualmente ou automaticamente.
O Programa Genético do Trading System Lab contém vários recursos que reduzem a possibilidade de ajuste de curva ou a produção de um Sistema de Negociação que não continua a funcionar no futuro. Primeiro, os Trading Systems evoluídos têm seu tamanho reduzido ao menor tamanho possível através do que é chamado de pressão de parcimônia, a partir do conceito de comprimento de descrição mínima. Assim, o Sistema de Negociação resultante é o mais simples possível e geralmente se acredita que quanto mais simples for o Sistema de Negociação, melhor será o seu desempenho 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 ótimas. A aleatoriedade é introduzida não apenas nas combinações do material genético usado nos Trading Systems evoluídos, mas também em Parsimony Pressure, Mutation, Crossover e outros parâmetros GP de nível superior. O teste Fora da Amostra é realizado enquanto o treinamento está em andamento com as informações estatísticas apresentadas nos testes In Sample e Out of Sample Trading System. Os logs de execução são apresentados ao usuário para os dados Treinamento, Validação e Fora da 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 Fora da Amostra em comparação com o teste Na Amostra 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. Por fim, o Conjunto de Terminais é cuidadosamente escolhido de modo a não influenciar excessivamente a seleção do material genético inicial em relação a qualquer tendência ou sentimento específico do mercado.
A TSL não inicia sua execução com um Sistema de Negociação predefinido. Na verdade, apenas o Input Set e uma seleção de modos de entrada de mercado ou modos, para pesquisa e atribuição automática de entrada, são feitos inicialmente. Um padrão ou comportamento indicador que pode ser considerado 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. Este é um afastamento radical do desenvolvimento do Trading System gerado manualmente.
Um Sistema de Negociação é um conjunto lógico de instruções que informa ao comerciante quando comprar ou vender um mercado em particular. Estas instruções raramente requerem intervenção de um profissional. Os Sistemas de Negociação podem ser negociados manualmente, observando as instruções de negociação em uma tela de computador, ou podem ser negociados permitindo que o computador entre no mercado automaticamente. Ambos os métodos estão em uso generalizado hoje. Há mais administradores profissionais de dinheiro que se consideram comerciantes "Sistemáticos ou Mecânicos" do que aqueles que se consideram "discricionários", e o desempenho dos administradores de fundos sistemáticos é geralmente superior ao dos gerentes de dinheiro discricionários. Estudos têm mostrado que as contas de negociação geralmente perdem dinheiro com mais frequê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 corretoras de commodities, no entanto, as corretoras de ações e ações estão cada vez mais conscientes dos benefícios através do uso de Sistemas de Negociação e algumas começaram a oferecer Sistemas de Negociação aos seus clientes de varejo.
A maioria dos gestores de fundos mútuos já está usando algoritmos de computador sofisticados para orientar suas decisões sobre o que "estoque a escolher" ou que "rotação setorial" é a favor. Computadores e algoritmos se tornaram mainstream no investimento e esperamos que essa tendência continue enquanto os investidores mais experientes em informática continuam a permitir que parcelas de seu dinheiro sejam gerenciadas pela Trading Systems para reduzir o risco e aumentar os retornos. As enormes perdas experimentadas pelos investidores que participam na compra e manutenção de ações e fundos mútuos como o mercado de ações derretido nos últimos anos está promovendo esse movimento no sentido de uma abordagem mais disciplinada e lógica para o investimento no mercado de ações. O investidor médio percebe que atualmente ele 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 aeronaves que usamos para o transporte, os equipamentos 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 "atirar nos quadris" em suas decisões sobre "o que" ações ou fundo mútuo para comprar ou vender e esperar ganhar dinheiro? Finalmente, o investidor médio tornou-se cauteloso com os conselhos e informações encaminhados por corretores inescrupulosos, contadores, diretores de empresas e consultores financeiros.
Nos últimos 20 anos, matemáticos e desenvolvedores de software buscaram indicadores e padrões nos mercados de ações e commodities em busca de informações que apontassem para a direção do mercado. Esta informação pode ser usada para melhorar o desempenho dos Sistemas de Negociação. Geralmente este processo de descoberta é realizado através de uma combinação de tentativa e erro e mais sofisticada "Data Mining". Normalmente, o desenvolvedor levará semanas ou meses processando os números para produzir um Sistema de Negociação em potencial. Muitas vezes, este Sistema de Negociação não terá um bom desempenho quando realmente usado no futuro, devido ao que é chamado de "ajuste de curva". Ao longo dos anos tem havido muitos Trading Systems (e empresas de desenvolvimento de Trading System) que vêm e vão como seus sistemas falharam em negociação ao vivo. Desenvolver Sistemas Comerciais que continuem a atuar no futuro é difícil, mas não impossível de realizar, embora nenhum desenvolvedor ético ou gestor de dinheiro dê uma garantia incondicional de que qualquer Sistema de Negociação, ou mesmo qualquer ação, título ou fundo mútuo, continuará. para produzir lucros para o futuro para sempre.
O que levou semanas ou meses para o desenvolvedor do Trading System produzir no passado pode agora ser produzido em minutos com o 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 utiliza 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. Observe que apenas algumas entradas serão realmente usadas ou necessárias, resultando em estruturas de estratégia geralmente simples e 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 que não estamos simplesmente executando uma otimização de força bruta de indicadores existentes procurando por 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" os 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 avança em direção a um Sistema de Negociação "geneticamente modificado". O resultado é que um excelente Sistema de Negociação pode ser gerado em poucos minutos em 20 a 30 anos de dados diários de mercado em praticamente qualquer mercado.
Nos últimos anos, tem havido várias abordagens para a otimização do Sistema de Negociação que empregam o "Algoritmo" Genético menos poderoso. Os Programas Genéticos (GPs) são superiores aos Algoritmos Genéticos (GA's) por várias razões. Primeiro, os GP's convergem em uma solução a uma taxa exponencial (muito rápida e ficando mais rápida) enquanto os Algoritmos Genéticos convergem a uma taxa linear (muito mais lenta e não ficando mais rápida). Em segundo lugar, as GP's geram realmente um código de máquina do Sistema de Negociação que combinava o material genético (indicadores, padrões, dados entre mercados) de maneiras únicas. Essas combinações exclusivas podem não ser intuitivamente óbvias e não exigem 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. Os GAs, por outro lado, simplesmente procuram soluções ótimas à medida que progridem ao longo da faixa 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 de criação do Trading System da GP de vários comprimentos, usando genomas de tamanho variável, modificará o comprimento do Sistema de Negociação através do que é chamado crossover 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. Os GA's usam apenas blocos de instrução de tamanho fixo, fazendo uso somente de crossover homólogo e não produzem códigos de Sistema de negociação de comprimento variável, nem descartarão um indicador ou padrão ineficiente tão facilmente quanto um GP. Finalmente, os Programas Genéticos são um avanço recente no domínio do aprendizado de máquina, 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, as GPs incluem recursos muito mais rápidos e robustos, tornando a GP a melhor escolha para a produção da 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 do mercado financeiro no mundo.
O Algoritmo de Programação Genética, o Simulador de Negociação e os Motores de Fitness usados na TSL levaram mais de 8 anos para serem produzidos.
O Trading System Lab é o resultado de anos de trabalho árduo de uma equipe de engenheiros, cientistas, programadores e traders, e acreditamos que representa a tecnologia mais avançada disponível atualmente para a negociação nos mercados.
Seleção Natural: Algoritmo Genético para Otimização de Sistemas e Programação Genética.
O Evo 2 é a nossa biblioteca avançada de algoritmos genéticos que incorpora o que há de mais recente no design de algoritmos genéticos, como processos biologicamente idênticos, comutadores epigenéticos, recozimento simulado, prevenção de consanguinidade de Westermarck, recombinação limitada por idade e muito mais.
O algoritmo Evo 2 não se baseia no design GA padrão "single cromossomo".
O Evo 2 resolve rapidamente problemas de otimização multivariada e escala bem com a complexidade. O algoritmo Evo 2 foi projetado para programação genética (criação autônoma de sistemas de negociação), otimização do sistema de negociação e otimização de portfólio. O Evo 2 permite que os desenvolvedores criem otimizações de sistema de negociação multivariadas com facilidade.
Genoma e Algoritmo Bio-Idênticos.
Evo 2 não é apenas bio-inspirado, mas é bio-idêntico em muitos aspectos. O Evo 2 simula todos os processos naturais, desde a seleção do parceiro até o empacotamento do DNA e a completa meiose. A maioria dos algoritmos genéticos padrão negligenciam a realização das múltiplas etapas da meiose que são de vital importância para a variação genética, uma variável crucialmente importante para evitar ótimos locais.
Durante a prófase, os cromossomos fazem sinapses e uma pequena quantidade de DNA é trocada entre os cromossomos homólogos através de um processo conhecido como "crossing over". A parte crítica da prófase é o alinhamento das tetrads em pares homólogos. O algoritmo Evo 2 garante que os homólogos sejam criados apenas a partir de cromossomos sexuais não relacionados.
Metáfase e Anáfase.
Metáfase e anáfase são as fases em que muita variação é incorporada ao genoma; no entanto, a maioria dos algoritmos genéticos deixa completamente de lado esses passos. O Evo 2 simula ambas as fases completamente e com precisão.
Nenhuma endogamia permitida.
A maioria dos algoritmos genéticos padrão são "sopa inato", tecnicamente falando. A endogamia reduz a variação genética, o que é suficiente dizer, impede que os sistemas evoluam e se adaptem ao seu ambiente. Nos AGs padrão, isso significa que um sistema pode ter mais probabilidade de ficar preso em ótimos locais. Embora a natureza tenha pelo menos três mecanismos para evitar a endogamia, a maioria dos algoritmos genéticos não consegue resolver esse problema.
O primeiro método: Impedir que a prole se reproduza. A endogamia resulta em aumento da homozigose, o que pode aumentar as chances de os filhos serem afetados por traços recessivos ou deletérios.
O segundo mecanismo: afastar os jovens do sexo masculino, a fim de evitar o incesto de acasalamento entre irmãos.
O terceiro mecanismo: o efeito Westermarck. Este é um efeito psicológico através do qual indivíduos que são criados em grande proximidade durante a infância tornam-se insensíveis à atração sexual posterior.
A consequência final da endogamia é a extinção de espécies devido à falta de diversidade genética. A chita, uma das espécies mais endogâmicas da Terra, é um excelente exemplo. E também acontece de estar em extinção. Vinte mil anos atrás, as chitas percorriam toda a África, Ásia, Europa e América do Norte. Cerca de 10 mil anos atrás, devido às mudanças climáticas, todas, exceto uma espécie, foram extintas. Com a drástica redução em seus números, os parentes próximos foram forçados a procriar, e a chita se tornou geneticamente endogâmica, o que significa que todas as chitas estão intimamente relacionadas.
Embora a natureza proíba endogamia, quase todos os algoritmos genéticos simulados por computador ignoram esse problema.
Interruptores Epigenéticos.
A teoria epigenética descreve como as mudanças na expressão gênica podem ser causadas por outros mecanismos além das mudanças na seqüência de dna subjacente, temporariamente ou através de múltiplas gerações, influenciando uma rede de interruptores químicos dentro das células coletivamente conhecidas como epigenoma. O Evo 2 pode simular chaves epigenéticas para permitir que o sistema seja temporariamente penalizado por ações como ser muito ganancioso ou avesso ao risco.
Recozimento simulado.
Recozimento simulado é uma metaheurística probabilística para o problema de otimização global de localizar uma boa aproximação ao ótimo global de uma dada função em um grande espaço de busca. É frequentemente usado quando o espaço de pesquisa é discreto. Para certos problemas, o recozimento simulado pode ser mais eficiente do que a enumeração exaustiva.
Árvore genealógica.
O Evo 2 pode guardar informações genealógicas para cada genoma, para que os usuários possam rever a progressão do algoritmo genético para ver como certos genes evoluíram ao longo do tempo.
Visualizador de Karyogram.
O Evo 2 apresenta um cariograma embutido, que permite a visualização de genomas enquanto os algoritmos genéticos estão evoluindo. O cariograma pode ser personalizado para exibir informações de genealogia para genomas específicos por meio de um menu de contexto.
Aplicações do Evo 2.
O Evo 2 pode ser usado no cliente ou no servidor para programação genética (criação autônoma de sistemas de negociação), otimização do sistema de negociação, otimização de portfólio, alocação de ativos e aplicativos não relacionados a financiamento, incluindo mas não limitado a criatividade artificial, design automatizado, bioinformática. , cinética química, quebra de código, engenharia de controle, modelos Feynman-Kac, filtragem e processamento de sinais, aplicações de programação, engenharia mecânica, otimização estocástica e problemas de programação.
Exemplos de programação genética.
Os exemplos de programação do TradeScript mostram aos desenvolvedores como criar modelos de programação genética capazes de fazer o teste reverso e otimizar estratégias. A documentação de programação pode ser baixada aqui.
Comments
Post a Comment