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 múltiplos 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, na 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 de componentes de valor de aptidão, 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 na 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 tão 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 de & quot; border & 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 negócios de soma zero, ou seja, negócios que não geram nem perdem dinheiro, eu os considero perdedores, 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 às 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.
Evolving Trading Strategies Com Genetic Programming - GP Parâmetros e Operadores.
A programação genética em seu núcleo usa um conjunto de operadores (seleção, mutação, cruzamento, elitismo etc.) e parâmetros (número de gerações, tamanho da população, etc.). Como há uma vasta literatura sobre este assunto, vou pular o básico e assumir que o leitor já esteja familiarizado com o tópico.
A primeira coisa a entender sobre os parâmetros e operadores da GP é que eles essencialmente formam um sistema complexo. Alterações em um parâmetro podem ou não afetar a maneira como outros parâmetros se comportam. Pequenas mudanças em um parâmetro podem levar a mudanças não lineares em todo o resultado evolutivo. Em outras ocasiões, uma grande mudança nos parametradores pode não alterar o resultado geral. Um bom exemplo é definir o tamanho da população. Iniciantes expostos recentemente ao GP geralmente pensam que quanto maior o tamanho da população, melhor. Afinal, quanto mais indivíduos em uma população, maior a chance geral de um bom resultado de pesquisa ser encontrado, certo? Muito errado. Muitas vezes, um pequeno (mas não tão pequeno!) Tamanho populacional é realmente preferível a um tamanho maior. Há uma troca entre ter mais indivíduos em uma população e aumentar o nível geral de ruído. Ter mais indivíduos por população diminui a chance de que um único indivíduo relativamente apto seja capaz de criar descendentes. Assim, o nível de ruído é aumentado. Alguns sistemas de software GP disponíveis comercialmente são anunciados para processar milhares de pessoas em um tempo muito curto. Pela minha experiência, se você precisar de mais do que, digamos, 500 pessoas por população, provavelmente você está fazendo algo errado. Então, vamos dar uma olhada em alguns parâmetros e operadores.
Tamanho da população.
Eu já mencionei o tamanho da população. Tente começar com uma pequena população de talvez 100 pessoas. Isso também diminuirá o tempo de computação. Como dito acima, aumentar o tamanho da população não levará necessariamente a melhores resultados devido ao aumento do nível de ruído.
Número de gerações
Se o seu algoritmo GP funcionar, você observará que nos estágios iniciais do processo evolucionário os indivíduos aptos podem ser encontrados com relativa facilidade, embora às vezes algumas gerações passem sem qualquer melhoria antes que ocorra outra grande melhoria. Depois de várias gerações, as melhorias ocorrem com menos frequência. Tente começar com apenas 10 a 15 gerações. Se houver apenas uma melhoria marginal da primeira para a última geração, provavelmente você está fazendo algo errado. Também é útil introduzir um contador de gerações paralisadas e interromper o processo evolucionário se depois de um certo número de gerações nenhuma melhoria adicional for observada.
Número de árvores de decisão e tamanho da árvore.
Eu já escrevi sobre como codificar árvores de decisão. Mais uma vez, há uma compensação. Quanto mais complicada for a decisão geral sobre a profundidade / tamanho da árvore e o número de subárvores utilizadas, maior será a chance de superajuste. Regras de decisão menos complexas são quase sempre preferíveis, mas provavelmente ainda fará sentido usar árvores de decisão dedicadas para regras longas e curtas. Vou me concentrar no assunto de punir a complexidade por meio de pressão de parcimônia em um artigo posterior.
Algoritmo de Programação Genética.
Embora o algoritmo GP básico seja relativamente simples, existem várias alternativas para ele, por exemplo, Programação Genética Linear, Programação Genética Cartesiana, Algoritmo Genético de Ordenação Não Dominada (NSGA), Algoritmo Evolutivo de Pareto de Força (SPEA) e muitos outros. A escolha de uma alternativa em particular muitas vezes tem implicações na forma como os indivíduos são codificados, na função de adequação e também na implementação dos operadores de seleção, mutação e crossover. Tradicionalmente, o operador de mutação, crossover e elitismo é usado exclusivamente mutuamente e não em combinação. Ou seja, um desses operadores é selecionado por uma estratégia de seleção de operador e somente esse operador é aplicado. Por exemplo, duas crianças produzidas como descendentes não estão sujeitas a mutação, embora isso seja possível.
Um operador de seleção é uma estratégia de como selecionar um ou vários indivíduos de um pool para um propósito específico, como mutação ou crossover. Existem muitas estratégias de seleção e realmente depende do contexto que se deve usar preferencialmente. Cada estratégia de seleção depende de um determinado critério para comparar indivíduos. Na maioria dos casos, o melhor (em termos de aptidão) individual é desejado, mas às vezes também pode ser o pior indivíduo. No caso de funções de aptidão multi-objetivo, o processo de seleção pode se tornar bastante complicado. Muitas vezes, um operador de seleção deve selecionar dois indivíduos e, ainda assim, garantir que não selecione o mesmo indivíduo duas vezes. Selecionar apenas os melhores indivíduos para reprodução não é sábio, porque isso poderia levar a uma convergência prematura para um local em vez de um ótimo global no espaço de busca. Uma abordagem equilibrada é necessária, o que dá aos indivíduos melhores uma chance maior de serem selecionados para reprodução, enquanto continuam a selecionar indivíduos mais fracos. Isso manterá uma mistura entre a pressão de sobrevivência e deixar espaço para novas soluções aparecerem e serem exploradas.
Existem vários métodos de seleção, mas provavelmente a estratégia de seleção mais popular é a seleção de torneios. Seleção de torneio é um processo de duas etapas. Primeiro, alguns (por exemplo, 7) indivíduos são selecionados aleatoriamente - o "torneio". Segundo, um ou dois indivíduos são selecionados do torneio de acordo com sua condição física. Um tamanho de torneio maior dá aos indivíduos mais fracos uma chance geral menor de serem selecionados.
Às vezes, pode ser uma boa ideia simplesmente permitir que o melhor de um ou dois indivíduos de uma população seja copiado para a próxima geração, porque senão eles podem ser perdidos. O problema com o elitismo é geralmente que, sem outras medidas tomadas, as gerações posteriores poderiam ser preenchidas com muitas cópias de indivíduos idênticos. Comparar indivíduos por igualdade pode, no entanto, ser uma operação dispendiosa em termos computacionais. Eu pessoalmente prefiro não usar elitismo por esse motivo.
A mutação deve ocorrer apenas com baixa probabilidade, por ex. em 0% - 2% dos casos. Algumas implementações GP variam a probabilidade de mutações durante o processo evolutivo. Para as diferentes versões de mutação (por exemplo, mutação de ponto ou mutação de subtree), consulte uma das muitas fontes de literatura sobre o assunto. Esteja ciente de que a mutação deve estar de acordo com a tipificação de nós em uma árvore de decisão.
Crossover é o operador GP com maior probabilidade (por exemplo, 80% - 100%) para ser escolhido para produzir descendentes. O uso de nós tipados garante que somente os descendentes válidos e significativos sejam criados pelo operador de crossover. Um problema é que, durante o processo evolutivo, esse operador tem a tendência de aumentar o tamanho médio das árvores de decisão e, assim, levar ao inchaço do código. Freqüentemente, os indivíduos mais aptos são aqueles que na verdade supermodificam a série histórica. Eles também são os que têm as maiores regras de decisão. O operador de seleção os seleciona com a maior probabilidade e, portanto, o operador de cruzamento subsequentemente produz um aumento no tamanho da árvore de decisão. A contra-medida apropriada é a pressão de parcimônia, sobre a qual escreverei em um post posterior.
O problema de evoluir indivíduos estruturalmente semelhantes.
Um problema comum é que o processo evolutivo muitas vezes tem a tendência de evoluir muitas estratégias de negociação quase idênticas ao longo do tempo. A população é preenchida com alguns "tipos básicos" de indivíduos que são estruturalmente muito semelhantes entre si e, portanto, têm valores de aptidão muito semelhantes. Para obter a imagem, imagine a mesma estratégia de negociação para vários indivíduos, mas cada um com uma pequena alteração em um único parâmetro. Existem diferentes razões pelas quais esse fenômeno ocorre. Uma é que a evolução da aptidão do melhor indivíduo da população é descontínua. Se houver um & quot; salto & quot; significativo & quot; no melhor condicionamento físico de uma geração para a próxima, há grandes chances de que o melhor indivíduo permaneça o mais apto para as próximas gerações - até que ocorra outro salto desse tipo. Isto é igualmente verdade para o segundo e o terceiro melhor indivíduo da população. Portanto, por várias gerações seguidas, os poucos indivíduos mais aptos terão as maiores chances de criar descendentes e, naturalmente, os descendentes serão estruturalmente semelhantes aos seus pais. Como efeito, cada vez mais indivíduos estruturalmente semelhantes preencherão as primeiras posições na população, reduzindo efetivamente a variedade genética em toda a população.
Muitas vezes é bastante difícil encontrar uma solução satisfatória para esse problema. Uma possibilidade é manter o parâmetro de mutação em um nível alto. Outra solução é introduzir parâmetros GP adaptativos, por exemplo, variando as probabilidades de mutação e / ou de cruzamento ao longo do processo evolutivo. Ou faça alterações dinâmicas nos operadores de seleção. Infelizmente, essas alternativas muitas vezes não são muito eficazes e podem ser bastante complicadas de implementar ou calibrar adequadamente. Uma solução computacionalmente muito cara é comparar as estratégias de negociação para cada geração e não permitir que a população contenha indivíduos estruturalmente iguais. Isso requer uma comparação de cada indivíduo entre si ao construir a população da próxima geração, o que retardará o processo evolutivo em grande medida.
Curiosamente, pela minha experiência, este problema é significativamente reduzido quando se muda de um objetivo único para uma poderosa função de aptidão multi-objetivo / processo evolutivo como algoritmo genético de ordenação não dominada (NSGA) e algoritmo de resistência pareto algoritmo evolutivo (SPEA) . Esses algoritmos definem inerentemente uma abordagem diferente na seleção de indivíduos para reprodução, o que reduz muito menos a variedade desejada no gene poole do que as funções de adequação de objetivo único. Vou escrever mais sobre esses dois algoritmos em um artigo posterior.
Programação genética de estratégias de negociação
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 Gerador de 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, 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 mais alto. 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. Finalmente, o Conjunto de Terminais é cuidadosamente escolhido de forma a não influenciar excessivamente a seleção do material genético inicial em relação a qualquer tendência ou sentimento do mercado em particular.
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 de 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 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 combina 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 GP's 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.
Gerando Estratégias de Negociação Baseada em Mudança Direcional com Programação Genética.
Jeremie Gypteau Fernando E. B. Otero Michael Kampouridis Autor de e-mail.
A maioria das ferramentas de previsão usa uma escala de tempo físico para estudar as flutuações de preços dos mercados financeiros, tornando o fluxo de tempo físico descontínuo. Portanto, usar uma escala de tempo físico pode expor as empresas a riscos, devido ao desconhecimento de algumas atividades significativas. Neste artigo, uma abordagem alternativa e inovadora é explorada para capturar atividades importantes no mercado. A ideia principal é usar uma escala de tempo intrínseca com base nas mudanças direcionais. Combinada com a Programação Genética, a abordagem proposta visa encontrar uma estratégia de negociação ideal para prever os movimentos futuros de preço de um mercado financeiro. Para avaliar sua eficiência e robustez como ferramenta de previsão, foi realizada uma série de experimentos, onde pudemos obter informações valiosas sobre o desempenho da previsão. Os resultados dos experimentos indicam que esse novo framework é capaz de gerar novas e lucrativas estratégias de negociação.
Referências.
Informações sobre direitos autorais.
Autores e Afiliações.
Jeremie Gypteau 1 Fernando E. B. Otero 1 Michael Kampouridis 1 Autor de e-mail 1. Escola de Computação da Universidade de Kent Canterbury UK.
Sobre este papel.
Recomendações personalizadas.
Cite o papel.
Gerente de referência de papéis. RIS RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Download instantâneo Legível em todos os dispositivos Possui-o para sempre Imposto sobre vendas local incluído, se aplicável.
Cite o papel.
Gerente de referência de papéis. RIS RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Mais de 10 milhões de documentos científicos ao seu alcance.
Switch Edition.
&cópia de; 2017 Springer International Publishing AG. Parte da natureza de Springer.
Programação genética de estratégias de negociação
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 aos 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;
A listagem de cada sistema inclui o número do sistema (correspondente à entrada OptStep), símbolo de mercado, 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 no TradeStation, o código entre as duas linhas de comentário () pode ser copiado e colado em uma estratégia no TradeStation, em seguida, executado na janela do gráfico.
O último sistema no arquivo de saída é para um sistema curto somente (# 6160). Quando guardada na TradeStation como estratégia e aplicada ao mesmo gráfico de T-bond, foi produzida a seguinte curva de capital:
Figura 3. Sistema Short-only para T-bonds, nos últimos 20 anos, com US $ 15 por transação deduzidos para custos de negociação, gerados 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 as metas de compilação e (2) o modelo do sistema de padrões é difícil de generalizar para estratégias mais complexas. . Isso sugere que é necessária uma abordagem mais sofisticada.
Um método para geração automática de código que trata dessas 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 a partir de uma população inicial de membros gerados aleatoriamente. Membros da população competem uns contra os outros com base em sua "aptidão". Os membros mais aptos são selecionados como "pais" para produzir um novo membro da população, que substitui um membro mais fraco (menos apto).
Reduz a necessidade de conhecimento de indicadores técnicos e desenho de estratégia. O algoritmo GP seleciona as regras de negociação individuais, indicadores e outros elementos da estratégia para você.
O processo de construção de regras permite uma complexidade considerável, incluindo regras de negociação não lineares.
O processo GP elimina os elementos mais trabalhosos e entediantes do processo tradicional de desenvolvimento de estratégias; ou seja, criar uma nova ideia de negociação, programá-la, verificar o código, testar a estratégia, modificar o código e repetir. Tudo isso é feito automaticamente no GP.
O processo GP é imparcial. Enquanto a maioria dos comerciantes desenvolveu vieses a favor ou contra indicadores específicos e / ou lógica de negociação, o GP é guiado apenas pelo que funciona.
Ao incorporar a semântica da regra de negociação adequada, o processo GP pode ser projetado para produzir regras de negociação lógicas e código livre de erros.
O processo GP geralmente produz resultados que são não apenas exclusivos, mas não óbvios. Em muitos casos, essas gemas escondidas seriam quase impossíveis de encontrar de outra maneira.
Ao automatizar o processo de criação, o tempo necessário para desenvolver uma estratégia viável pode ser reduzido de semanas ou meses para uma questão de minutos em alguns casos, dependendo do tamanho do arquivo de dados do preço de entrada e de outras configurações de construção.
A programação genética tem sido usada com sucesso em uma variedade de campos, incluindo processamento de sinais e imagens, controle de processos, bioinformática, modelagem de dados, geração de código de programação, jogos de computador e modelagem econômica; ver, por exemplo, Poli et al. 2 Uma visão geral do uso do GP em finanças é fornecida por Chen. 3 Colin 4 foi um dos primeiros a explicar como usar GP para otimizar combinações de regras para uma estratégia de negociação.
J. Koza. Programação Genética. The 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 Iorque.
Risto Karjalainen. Regras técnicas de negociação em evolução para futuros de S & P 500, Advanced Trading Rules, 2002, Pages 345-366. Elsevier Science, Oxford, Reino Unido.
Jean-Yves Potvin, Patrick Soriano e 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. Revista Européia de Pesquisa Operacional, volume 207, edição 3, 16 de dezembro de 2010, páginas 1717-1727.
Um Algoritmo de Construção Usando Programação Genética.
Expandindo o algoritmo de construção apresentado anteriormente (ver Fig. 1), um algoritmo mais detalhado é ilustrado abaixo na Fig. 4 com base na programação genética. As caixas cinza-sombreadas representam os dados de entrada, que incluem os dados de preço para o (s) mercado (s) de interesse, os indicadores e tipos de ordem no chamado conjunto de construção e as opções e critérios de desempenho (metas de construção) selecionadas pelo do utilizador.
Figura 4. Algoritmo de construção para geração automática de código com programação genética.
O processo GP pode ser usado para evoluir simultaneamente dois elementos essenciais da estratégia: condições de entrada e ordens de entrada e saída. As condições de entrada são tipicamente representadas como estruturas de árvore, 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 pode ser representado da seguinte forma:
Embora a programação genética seja capaz de gerar estratégias de negociação com considerável variedade, é necessário começar com uma estrutura generalizada para as estratégias a seguir. A estrutura da estratégia mostrada abaixo no pseudocódigo fornece uma estrutura para a construção de estratégias com base nas condições de entrada e nos tipos de pedidos, como os discutidos acima:
Entradas: N1, N2, N3,…
Se a posição for plana e LongEntryCondition for verdadeira, então.
Longa entrada ...
Inicialize ordens de saída longas conforme necessário ...
Se a posição for plana e ShortEntryCondition for true, então.
Ordem de entrada curta…
Inicialize ordens de saída curtas conforme necessário ...
Se a posição for longa, então.
Longa ordem de saída 1…
Longa ordem de saída 2…
Se a posição é 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 entradas. Uma entrada é fornecida para qualquer parâmetro do indicador, comprimento de lookback do padrão de preço e quaisquer parâmetros requeridos pelos pedidos de entrada e saída, como o comprimento de lookback do ATR.
Para ilustrar o uso de programação genética para geração automática de código na construção de estratégias, o programa Adaptrade Builder foi executado em barras diárias de um mercado futuro de índices de ações para uma população pequena 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 negócios, o coeficiente de correlação, a significância estatística e a relação retorno / rebaixamento. Metas específicas foram estabelecidas para o número de negociações e a relação retorno / rebaixamento. As outras métricas selecionadas foram maximizadas. A função de adequação foi uma média ponderada de termos para cada métrica.
Figura 6. Porcentagem 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 da população aumentou após cinco e dez gerações, como mostra a Figura 7. Observe que esses resultados são para o lucro líquido do OOS. Por definição, os dados fora da amostra não são usados na compilação, portanto, os resultados do OOS são imparciais; eles não se beneficiam da retrospectiva. Isto implica que o processo GP não só tende a melhorar os resultados dentro da amostra ao longo de gerações sucessivas, o que é um efeito direto do algoritmo GP, mas os resultados OOS também tendem a melhorar à medida que as estratégias são evoluídas. Isso indica uma construçã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 14:19:52.
Código da TradeStation para TS 6 ou mais recente.
Arquivo de preço: C: \ TestData. txt.
Var: EntCondL (false),
EntCondL = (Maior (Volume, NL1) & gt; = Menor (Volume, NL2)) ou (Volume & lt; Média (Volume, NL3));
Se MarketPosition = 0 e EntCondL então começarem.
Compre a próxima barra em XAverage (L, NBarEnL1) + EntFrL * ATREnL stop;
Se MarketPosition = 0 e EntCondS então começarem.
Venda a barra seguinte mais curta no ponto mais alto (H, NBarEnS1) - EntFrS * AbsValue (menor (L, NBarEnS2) - menor (H, NBarEnS3));
SStop = Power (10, 10);
Se MarketPosition & gt; 0 então comece.
Se BarsSinceEntry & gt; = NBarExL então.
Vender próxima barra no mercado;
Vender a próxima barra no limite EntryPrice + TargFrL * ATRTargL;
Se MarketPosition & lt; 0 então comece.
If EntryPrice - C & gt; ATRFrTrailS * ATRTrailS então.
Se o STrailOn começar, então.
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 no SStop stop;
Construir sistemas de negociação através da geração automática de código é um tipo de otimização. A maioria dos operadores sistemáticos provavelmente está familiarizada com a otimização de parâmetros, na qual 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 excesso de otimização, ou “over-fitting”, também é uma preocupação para a geração automática de código, assim como é para a otimização de parâmetros.
Para informações sobre software para construção de estratégias de negociação usando programação genética, por favor clique aqui.
Se você gostaria de ser informado sobre novos desenvolvimentos, novidades e ofertas especiais da Adaptrade Software, por favor, junte-se à nossa lista de e-mail. Obrigado.
Copyright © 2004-2015 Adaptrade Software. Todos os direitos reservados.
Otimização da programação genética para uma estratégia de negociação baseada na força do feedback do sentimento.
Este estudo é motivado pelas descobertas empíricas de que as mensagens do Twitter de notícias e mídias sociais (tweets) exibem um poder preditivo persistente no movimento do mercado financeiro. Com base na evidência de que os tweets são mais rápidos que as notícias revelando novas informações de mercado, enquanto as notícias são consideradas uma fonte de informação mais confiável do que os tweets, propomos uma estratégia comercial superior baseada na força de feedback entre as notícias e os tweets usando programação genérica. método de otimização. A principal intuição por trás dessa abordagem baseada na força do feedback é que o impulso conjunto das duas séries de sentimentos leva a sinais significativos do mercado, que podem ser explorados para gerar lucros comerciais superiores. With the trade-off between information speed and its reliability, this study aims to develop an optimal trading strategy using investors’ sentiment feedback strength with the objective to maximize risk adjusted return measured by the Sterling ratio. We find that the sentiment feedback based strategies yield superior market returns with low maximum drawdown over the period from 2012 to 2015. In comparison, the strategies based on the sentiment feedback indicator generate over 14.7% Sterling ratio compared with 10.4% and 13.6% from the technical indicator-based strategies and the basic buy-and-hold strategy respectively. After considering transaction costs, the sentiment indicator based strategy outperforms the technical indicator based strategy consistently. Backtesting shows that the advantage is statistically significant. The result suggests that the sentiment feedback indicator provides support in controlling loss with lower maximum drawdown.
Escolha uma opção para localizar / acessar este artigo:
Verifique se você tem acesso através de suas credenciais de login ou de sua instituição.
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 aos 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;
A listagem de cada sistema inclui o número do sistema (correspondente à entrada OptStep), símbolo de mercado, 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 no TradeStation, o código entre as duas linhas de comentário () pode ser copiado e colado em uma estratégia no TradeStation, em seguida, executado na janela do gráfico.
O último sistema no arquivo de saída é para um sistema curto somente (# 6160). Quando guardada na TradeStation como estratégia e aplicada ao mesmo gráfico de T-bond, foi produzida a seguinte curva de capital:
Figura 3. Sistema Short-only para T-bonds, nos últimos 20 anos, com US $ 15 por transação deduzidos para custos de negociação, gerados 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 as metas de compilação e (2) o modelo do sistema de padrões é difícil de generalizar para estratégias mais complexas. . Isso sugere que é necessária uma abordagem mais sofisticada.
Um método para geração automática de código que trata dessas 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 a partir de uma população inicial de membros gerados aleatoriamente. Membros da população competem uns contra os outros com base em sua "aptidão". Os membros mais aptos são selecionados como "pais" para produzir um novo membro da população, que substitui um membro mais fraco (menos apto).
Reduz a necessidade de conhecimento de indicadores técnicos e desenho de estratégia. O algoritmo GP seleciona as regras de negociação individuais, indicadores e outros elementos da estratégia para você.
O processo de construção de regras permite uma complexidade considerável, incluindo regras de negociação não lineares.
O processo GP elimina os elementos mais trabalhosos e entediantes do processo tradicional de desenvolvimento de estratégias; ou seja, criar uma nova ideia de negociação, programá-la, verificar o código, testar a estratégia, modificar o código e repetir. Tudo isso é feito automaticamente no GP.
O processo GP é imparcial. Enquanto a maioria dos comerciantes desenvolveu vieses a favor ou contra indicadores específicos e / ou lógica de negociação, o GP é guiado apenas pelo que funciona.
Ao incorporar a semântica da regra de negociação adequada, o processo GP pode ser projetado para produzir regras de negociação lógicas e código livre de erros.
O processo GP geralmente produz resultados que são não apenas exclusivos, mas não óbvios. Em muitos casos, essas gemas escondidas seriam quase impossíveis de encontrar de outra maneira.
Ao automatizar o processo de criação, o tempo necessário para desenvolver uma estratégia viável pode ser reduzido de semanas ou meses para uma questão de minutos em alguns casos, dependendo do tamanho do arquivo de dados do preço de entrada e de outras configurações de construção.
A programação genética tem sido usada com sucesso em uma variedade de campos, incluindo processamento de sinais e imagens, controle de processos, bioinformática, modelagem de dados, geração de código de programação, jogos de computador e modelagem econômica; ver, por exemplo, Poli et al. 2 Uma visão geral do uso do GP em finanças é fornecida por Chen. 3 Colin 4 foi um dos primeiros a explicar como usar GP para otimizar combinações de regras para uma estratégia de negociação.
J. Koza. Programação Genética. The 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 Iorque.
Risto Karjalainen. Regras técnicas de negociação em evolução para futuros de S & P 500, Advanced Trading Rules, 2002, Pages 345-366. Elsevier Science, Oxford, Reino Unido.
Jean-Yves Potvin, Patrick Soriano e 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. Revista Européia de Pesquisa Operacional, volume 207, edição 3, 16 de dezembro de 2010, páginas 1717-1727.
Um Algoritmo de Construção Usando Programação Genética.
Expandindo o algoritmo de construção apresentado anteriormente (ver Fig. 1), um algoritmo mais detalhado é ilustrado abaixo na Fig. 4 com base na programação genética. As caixas cinza-sombreadas representam os dados de entrada, que incluem os dados de preço para o (s) mercado (s) de interesse, os indicadores e tipos de ordem no chamado conjunto de construção e as opções e critérios de desempenho (metas de construção) selecionadas pelo do utilizador.
Figura 4. Algoritmo de construção para geração automática de código com programação genética.
O processo GP pode ser usado para evoluir simultaneamente dois elementos essenciais da estratégia: condições de entrada e ordens de entrada e saída. As condições de entrada são tipicamente representadas como estruturas de árvore, 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 pode ser representado da seguinte forma:
Embora a programação genética seja capaz de gerar estratégias de negociação com considerável variedade, é necessário começar com uma estrutura generalizada para as estratégias a seguir. A estrutura da estratégia mostrada abaixo no pseudocódigo fornece uma estrutura para a construção de estratégias com base nas condições de entrada e nos tipos de pedidos, como os discutidos acima:
Entradas: N1, N2, N3,…
Se a posição for plana e LongEntryCondition for verdadeira, então.
Longa entrada ...
Inicialize ordens de saída longas conforme necessário ...
Se a posição for plana e ShortEntryCondition for true, então.
Ordem de entrada curta…
Inicialize ordens de saída curtas conforme necessário ...
Se a posição for longa, então.
Longa ordem de saída 1…
Longa ordem de saída 2…
Se a posição é 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 entradas. Uma entrada é fornecida para qualquer parâmetro do indicador, comprimento de lookback do padrão de preço e quaisquer parâmetros requeridos pelos pedidos de entrada e saída, como o comprimento de lookback do ATR.
Para ilustrar o uso de programação genética para geração automática de código na construção de estratégias, o programa Adaptrade Builder foi executado em barras diárias de um mercado futuro de índices de ações para uma população pequena 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 negócios, o coeficiente de correlação, a significância estatística e a relação retorno / rebaixamento. Metas específicas foram estabelecidas para o número de negociações e a relação retorno / rebaixamento. As outras métricas selecionadas foram maximizadas. A função de adequação foi uma média ponderada de termos para cada métrica.
Figura 6. Porcentagem 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 da população aumentou após cinco e dez gerações, como mostra a Figura 7. Observe que esses resultados são para o lucro líquido do OOS. Por definição, os dados fora da amostra não são usados na compilação, portanto, os resultados do OOS são imparciais; eles não se beneficiam da retrospectiva. Isto implica que o processo GP não só tende a melhorar os resultados dentro da amostra ao longo de gerações sucessivas, o que é um efeito direto do algoritmo GP, mas os resultados OOS também tendem a melhorar à medida que as estratégias são evoluídas. Isso indica uma construçã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 14:19:52.
Código da TradeStation para TS 6 ou mais recente.
Arquivo de preço: C: \ TestData. txt.
Var: EntCondL (false),
EntCondL = (Maior (Volume, NL1) & gt; = Menor (Volume, NL2)) ou (Volume & lt; Média (Volume, NL3));
Se MarketPosition = 0 e EntCondL então começarem.
Compre a próxima barra em XAverage (L, NBarEnL1) + EntFrL * ATREnL stop;
Se MarketPosition = 0 e EntCondS então começarem.
Venda a barra seguinte mais curta no ponto mais alto (H, NBarEnS1) - EntFrS * AbsValue (menor (L, NBarEnS2) - menor (H, NBarEnS3));
SStop = Power (10, 10);
Se MarketPosition & gt; 0 então comece.
Se BarsSinceEntry & gt; = NBarExL então.
Vender próxima barra no mercado;
Vender a próxima barra no limite EntryPrice + TargFrL * ATRTargL;
Se MarketPosition & lt; 0 então comece.
If EntryPrice - C & gt; ATRFrTrailS * ATRTrailS então.
Se o STrailOn começar, então.
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 no SStop stop;
Construir sistemas de negociação através da geração automática de código é um tipo de otimização. A maioria dos operadores sistemáticos provavelmente está familiarizada com a otimização de parâmetros, na qual 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 excesso de otimização, ou “over-fitting”, também é uma preocupação para a geração automática de código, assim como é para a otimização de parâmetros.
Para informações sobre software para construção de estratégias de negociação usando programação genética, por favor clique aqui.
Se você gostaria de ser informado sobre novos desenvolvimentos, novidades e ofertas especiais da Adaptrade Software, por favor, junte-se à nossa lista de e-mail. Obrigado.
Copyright © 2004-2015 Adaptrade Software. Todos os direitos reservados.
Otimização da programação genética para uma estratégia de negociação baseada na força do feedback do sentimento.
Este estudo é motivado pelas descobertas empíricas de que as mensagens do Twitter de notícias e mídias sociais (tweets) exibem um poder preditivo persistente no movimento do mercado financeiro. Com base na evidência de que os tweets são mais rápidos que as notícias revelando novas informações de mercado, enquanto as notícias são consideradas uma fonte de informação mais confiável do que os tweets, propomos uma estratégia comercial superior baseada na força de feedback entre as notícias e os tweets usando programação genérica. método de otimização. A principal intuição por trás dessa abordagem baseada na força do feedback é que o impulso conjunto das duas séries de sentimentos leva a sinais significativos do mercado, que podem ser explorados para gerar lucros comerciais superiores. With the trade-off between information speed and its reliability, this study aims to develop an optimal trading strategy using investors’ sentiment feedback strength with the objective to maximize risk adjusted return measured by the Sterling ratio. We find that the sentiment feedback based strategies yield superior market returns with low maximum drawdown over the period from 2012 to 2015. In comparison, the strategies based on the sentiment feedback indicator generate over 14.7% Sterling ratio compared with 10.4% and 13.6% from the technical indicator-based strategies and the basic buy-and-hold strategy respectively. After considering transaction costs, the sentiment indicator based strategy outperforms the technical indicator based strategy consistently. Backtesting shows that the advantage is statistically significant. The result suggests that the sentiment feedback indicator provides support in controlling loss with lower maximum drawdown.
Escolha uma opção para localizar / acessar este artigo:
Verifique se você tem acesso através de suas credenciais de login ou de sua instituição.
No comments:
Post a Comment