Comparação de algoritmos genéticos para estratégias de negociação
Usando Algoritmos Genéticos para Previsão de Mercados Financeiros.
Burton sugeriu em seu livro "A Random Walk Down Wall Street" (1973) que "um macaco com os olhos vendados jogando dardos nas páginas financeiras de um jornal pode selecionar um portfólio que faria tão bem como um selecionado cuidadosamente por especialistas". Embora a evolução tenha tornado o homem mais inteligente na escolha de estoques, a teoria de Charles Darwin é bastante eficaz quando aplicada de forma mais direta. (Para ajudá-lo a escolher ações, verifique como escolher um estoque.)
Quais são os algoritmos genéticos?
Nos mercados financeiros, os algoritmos genéticos são mais comumente usados para encontrar os melhores valores combinados de parâmetros em uma regra de negociação, e eles podem ser incorporados em modelos ANN projetados para escolher ações e identificar negócios. Vários estudos demonstraram que esses métodos podem se tornar efetivos, incluindo "Algoritmos Genéticos: Gênesis de Avaliação de Estoque" (2004) por Rama e "As Aplicações de Algoritmos Genéticos na Otimização de Mineração de Dados de Mercado de Valores" (2004) por Lin, Cao, Wang , Zhang. (Para saber mais sobre ANN, veja Redes Neurais: Previsão de Lucros.)
Como os algoritmos genéticos funcionam.
Por exemplo, uma regra de negociação pode envolver o uso de parâmetros como Moving Average Convergence-Divergence (MACD), Exponential Moving Average (EMA) e Stochastics. Um algoritmo genético então entraria os valores nesses parâmetros com o objetivo de maximizar o lucro líquido. Ao longo do tempo, pequenas mudanças são introduzidas e aqueles que fazem um desejável impacto são mantidos para a próxima geração.
Existem três tipos de operações genéticas que podem ser realizadas:
Os cruzamentos representam a reprodução e o cruzamento biológico visto na biologia, pelo qual uma criança assume certas características de seus pais. As mutações representam a mutação biológica e são usadas para manter a diversidade genética de uma geração de uma população para outra, introduzindo mudanças pequenas aleatórias. As seleções são o estágio em que os genomas individuais são escolhidos de uma população para reprodução posterior (recombinação ou crossover).
Esses três operadores são então usados em um processo de cinco etapas:
Inicialize uma população aleatória, onde cada cromossomo é n-comprimento, sendo n o número de parâmetros. Ou seja, um número aleatório de parâmetros são estabelecidos com n elementos cada. Selecione os cromossomos, ou parâmetros, que aumentam os resultados desejáveis (presumivelmente lucro líquido). Aplicar operadores de mutação ou crossover aos pais selecionados e gerar uma prole. Recombine a prole e a população atual para formar uma nova população com o operador de seleção. Repita as etapas duas a quatro.
Ao longo do tempo, esse processo resultará em cromossomos (ou, parâmetros) cada vez mais favoráveis para uso em uma regra de negociação. O processo é encerrado quando um critério de parada é cumprido, o que pode incluir tempo de execução, aptidão, número de gerações ou outros critérios. (Para mais informações sobre MACD, leia Trading The MACD Divergence.)
Usando Algoritmos Genéticos na Negociação.
Ao usar essas aplicações, os comerciantes podem definir um conjunto de parâmetros que são então otimizados usando um algoritmo genético e um conjunto de dados históricos. Algumas aplicações podem otimizar quais parâmetros são usados e os valores para eles, enquanto outros são focados principalmente em simplesmente otimizar os valores para um determinado conjunto de parâmetros. (Para saber mais sobre essas estratégias derivadas do programa, consulte O Poder de Negociações de Programas.)
Principais dicas e truques de otimização.
A escolha de parâmetros é uma parte importante do processo, e os comerciantes devem procurar parâmetros que se correlacionem com as mudanças no preço de uma determinada segurança. Por exemplo, experimente diferentes indicadores e veja se algum parece se correlacionar com as principais voltas do mercado.
Comparação de Algoritmos Genéticos para Estratégias de Negociação.
Petr Kroha Matthias Friedrich.
Nesta contribuição, descrevemos e comparamos dois sistemas genéticos que criam estratégias de negociação. O primeiro sistema baseia-se na idéia de que a matriz de peso de conexão de uma rede neural representa o genótipo de um indivíduo e pode ser alterada por algoritmo genético. O segundo sistema usa programação genética para derivar estratégias de negociação. Como dados de entrada em nossas experiências, utilizamos indicadores técnicos dos estoques NASDAQ. Como resultado, os algoritmos geram estratégias de negociação, ou seja, compre, mantenha e venda sinais. Nossa hipótese de que as estratégias obtidas pela programação genética traz melhores resultados do que a estratégia de compra e retenção foi comprovada como estatisticamente significante. Discutimos os nossos resultados e comparamos-os com nossos experimentos anteriores com tecnologia difusa, abordagem fractal e com estratégia de indicadores técnicos simples.
Preview.
Referências.
Informações sobre direitos autorais.
Autores e afiliações.
Petr Kroha 1 Matthias Friedrich 2 1. Faculdade de Tecnologia da Informação, Departamento de Engenharia de Software Universidade Técnica Checa em Praga Praha 6 República Tcheca 2. Chemnitz University of Technology Chemnitz Alemanha.
Sobre este artigo.
Recomendações personalizadas.
Cite o papel.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Compartilhe papel.
Download instantâneo legível em todos os dispositivos Possuí-lo para sempre Imposto de venda local incluído, se aplicável.
Cite o papel.
.RIS Papers Reference Manager RefWorks Zotero.
.BIB BibTeX JabRef Mendeley.
Compartilhe papel.
Mais de 10 milhões de documentos científicos ao seu alcance.
Switch Edition.
&cópia de; 2017 Springer International Publishing AG. Parte de Springer Nature.
Usando a Programação Genética para evoluir Estratégias de Negociação.
Um amigo e eu recentemente trabalhamos juntos em uma tarefa de pesquisa onde usamos a Programação Genética (GP) com sucesso para desenvolver soluções para um problema de classificação financeira do mundo real. Este problema, chamado de análise de segurança, envolve a determinação de quais títulos devem ser comprados para realizar um bom retorno sobre o investimento no futuro. Para encontrar uma solução para este problema, usamos a Programação Genética para desenvolver uma população de árvores de decisão que poderia realizar análise de segurança em sessenta e duas das ações de tecnologia listadas no S & amp; P 500. Ou seja, desenvolvemos árvores de decisão capazes de classificar esses estoques de acordo com se eles deveriam ser comprados ou vendidos curtos.
Árvores de decisão de análise de segurança.
Durante o estudo, desenvolvemos dois tipos de árvores de decisão de análise de segurança. O primeiro utilizou apenas indicadores da análise fundamental e o segundo utilizou apenas indicadores da análise técnica. A análise fundamental é um método de avaliação de uma segurança para medir seu valor intrínseco examinando fatores econômicos, financeiros e outros fatores qualitativos e quantitativos relacionados. A análise técnica é um método de avaliação de títulos através da análise de estatísticas geradas pela atividade de mercado.
Uma estratégia para análise de segurança, independentemente de usar indicadores técnicos ou fundamentais, consistirá em uma série de regras para a tomada de decisões de investimento. Essa estratégia pode ser representada como uma árvore de decisão onde os nós terminais representam decisões de investimento e os nós funcionais representam regras baseadas em indicadores técnicos ou fundamentais. Devido a isso, muitas estratégias de investimento existentes são representadas na forma de árvores de decisão.
Foram selecionados, no total, quarenta e dois indicadores diferentes, tanto da análise técnica quanto da análise fundamental. As estratégias evoluídas foram para um período de detenção fixo de três meses, seis meses, nove meses ou doze meses de duração. As árvores de decisão foram novamente testadas usando dados de mercado de 2011 a 2013.
Programação genética.
A programação genética é uma especialização de um Algoritmo Genético. Algoritmos genéticos são baseados na população, o que significa que eles operam dentro de uma população composta por muitos indivíduos diferentes. Cada indivíduo é representado por um genótipo exclusivo (geralmente codificado como um vetor). Os Algoritmos Genéticos modelam o processo de evolução genética através de uma série de operadores, incluindo o operador de seleção que modela a sobrevivência do operador mais adequado, o crossover que modela a reprodução sexual e o operador de mutação que modela as mutações genéticas que ocorrem aleatoriamente para indivíduos em uma população. Esses operadores, quando combinados, produzem o que os cientistas da computação se referem como um Algoritmo Genético.
Os três operadores de um Algoritmo Genético sendo aplicados a uma população de vetores (blocos)
A diferença entre um Algoritmo Genético e o Algoritmo de Programação Genética é a forma como os genótipos individuais são representados. Nos Algoritmos Genéticos, os genótipos são representados como Cordas ou como Vetores, enquanto na Programação Genética esses genótipos são representados usando estruturas de dados de árvores. A operação de crossover em estruturas de árvores pode acontecer de algumas maneiras, uma sub-árvore é trocada, um nó de folha é removido ou alterado, ou os valores de algum nó são ajustados. Uma ilustração disso é mostrada abaixo,
Este diagrama descreve a estratégia de cruzamento de uma árvore de decisão usada pela programação genética para análise de segurança.
Após este estudo, concluímos que a programação genética tem um grande potencial para desenvolver novas estratégias de análise de segurança e gerenciamento de investimentos, desde que possam ser obtidas melhores funções para o cálculo da aptidão física. Ao longo de nosso estudo de pesquisa, vimos que as árvores de decisão evoluíram usando a Programação Genética podendo produzir classificações de estoque que superaram o retorno médio do mercado de forma consistente nos quatro trimestres. Isso é verdade para árvores de decisão que utilizaram indicadores técnicos, bem como árvores de decisão que usaram indicadores fundamentais. Várias outras conclusões foram derivadas de nossa pesquisa, incluindo os tamanhos ótimos e o nível de heterogeneidade para as árvores de decisão e o valor adicionado pelos diferentes indicadores e o desempenho das estratégias em relação um ao outro. Alguns resultados estão incluídos abaixo.
Relacionamento entre o tamanho da árvore de decisão para a aptidão Os indicadores mais populares utilizados na árvore de decisão final.
Tamanho médio das árvores por iteração Exemplo Exemplo de Árvore de Decisão de Análise de Segurança Árvore de Decisão de Análise de Segurança.
Conclusão.
Dois relatórios de pesquisa independentes foram produzidos por mim e meu amigo. Ambos os relatórios são muito mais detalhados sobre nosso estudo de pesquisa, a abordagem adotada, nosso projeto e implementação, as estratégias de teste que usamos, nossas conclusões e recomendações para pesquisas futuras. Você também pode baixar uma cópia do código-fonte criado durante a implementação. Para os meus colegas, conta mais técnica do projeto, clique aqui.
História anterior.
Agrupamento usando otimização de colunas de formigas.
Próxima História.
Sistemas Inteligentes de Negociação Algorítmica.
[Comentário copiado de LinkedIn Computational Finance Group]
Muito bom trabalho. A escrita também é maravilhosa.
Eu só tive a chance de olhar para o relatório. Algumas estatísticas que seriam boas para analisar: como o seu portfólio da GA se compara às carteiras dos mesmos ativos. Eu olhava duas carteiras de comparação: um portfólio igual ponderado e um portfólio de estilo S & P que é ponderado pela capitalização de mercado.
Como se verifica, pode ser surpreendentemente difícil vencer um portfólio igualmente ponderado. Rebalancear as carteiras trimestralmente, uma vez que alguns estoques vão subir e alguns vão cair (por exemplo, você quer manter os pesos do portfólio iguais, à medida que os preços mudam). Se o seu algoritmo genético supera essas carteiras, então você tem "alfa" (excesso de retorno sobre o benchmark).
Claro que o alfa não é tudo. Você deve olhar para a Perda de cauda esperada (ETL) (também conhecida como CVaR, déficit esperado) tanto para o portfólio da GA quanto para o "benchmark". Se você tiver menos risco para o mesmo retorno, então você pode considerar que você bateu o benchmark. A medida ETL é uma medida melhor do que a relação Sharpe quando se trata de risco, uma vez que a relação Sharpe mede a variação, que é de dois lados. ETL apenas mede a perda.
Uma observação: um problema com GA e redes neurais (NN) é que são caixas negras. É difícil determinar por que eles fazem as "escolhas" que eles fazem. Então imagine que você é um gerente de portfólio. Seu GA ou NN começa a funcionar mal. Que medidas você pode tomar para abordar isso? O problema é que tudo o que você pode realmente fazer é treinar e você não sabe se a reconversão melhorará. Claro que com uma árvore de decisão não é tão ruim assim, pelo menos você sabe quais as decisões tomadas. O problema é que, se você estiver constantemente procurando por ele para tomar as decisões "corretas", então você também terá um problema.
Essas questões são razões que você não vê esses algoritmos usados tanto (embora sejam usados).
[Resposta copiada do LinkedIn Computational Finance Group]
Obrigado pelas palavras complementares Ian, agradecemos que você se interesse em nossa pesquisa e nos forneça alguns comentários perspicazes.
Na nossa abordagem, apenas comparamos o desempenho das seleções de estoque feitas por nossas árvores de decisão em relação a um portfólio igualmente ponderado. Estender a nossa pesquisa para incorporar diferentes carteiras é uma ideia interessante que acompanharemos durante a próxima fase de desenvolvimento. Também estamos considerando implementar algumas das abordagens bem conhecidas para a análise de segurança para serem usadas como benchmarks de desempenho adicionais. Se você ou qualquer outra pessoa tiver sugestões sobre quais abordagens podem fazer bons benchmarks, por favor me avise.
Seus comentários sobre o uso de outras medidas de desempenho são atualizados. Gostaríamos definitivamente de voltar a olhar para a estrutura de back-testing e investigar maneiras de torná-lo mais rigoroso e menos propenso a excesso de ajuste. Também gostaríamos de implementar funções de fitness adicionais que levem em consideração medidas de risco de portfólio e medidas de retorno excessivo (alfa). Examinarei as medidas que você mencionou e verá o melhor possível para incorporá-las à nossa estrutura existente. Também consideraremos como é possível usar um framework de back-testing de código aberto, como ZipLine, o framework de back-testing usado por quantopian.
Suas observações sobre a natureza e o uso de GA e Neural Networks em finanças são muito interessantes. O desafio de tornar esses algoritmos mais transparentes e, francamente, um pouco menos assustador, é que não se deve tirar levemente. Meu colega atualmente está trabalhando em uma tarefa de pesquisa onde ele está tentando levantar o véu em alguns dos trabalhos internos das Redes Neurais. Se ele for bem sucedido, então, em vez de precisar redigir constantemente redes neuronais quando "algo der errado", ele pode isolar a causa do problema na rede neural e adaptar sua arquitetura de acordo. Ele está considerando usar uma aplicação financeira do mundo real de Neural Networks em sua pesquisa. Então, se você tem alguma idéia sobre isso, por favor me avise?
Pessoalmente falando, atualmente estou trabalhando em uma tarefa de pesquisa onde estou tentando construir uma estrutura algorítmica para a seleção e otimização de portfólio comercial. Faz uso de alguns algoritmos de Inteligência Computacional e em frente Eu vou manter em mente os problemas que você mencionou. Vou tentar identificar maneiras de mitigar ou eliminar essas preocupações no quadro. Obrigado novamente por todos os seus comentários, agradecemos o feedback. Se você tem mais boas ideias, entre em contato conosco.
[Comentário copiado de LinkedIn Computational Finance Group]
Eu acho que a abordagem mais razoável para backtesting é comparar seus resultados com o que acontece com o comércio aleatório que ainda obedece a quaisquer restrições que você está impondo no portfólio. Isso é discutido em:
[Resposta copiada do LinkedIn Computational Finance Group]
Obrigado Patrick, essa é uma boa sugestão. Eu entendo a abordagem porque o conceito de backtesting de um algoritmo contra uma estratégia de negociação aleatória é conceitualmente semelhante ao teste de um algoritmo de busca contra busca aleatória. O que é algo que fiz antes. Quão popular você diria que a estratégia de backtesting é?
[Resposta copiada do LinkedIn Computational Finance Group]
Stuart: Depressa impopular. Mas tem que começar em algum lugar.
[Comentário copiado de LinkedIn Computational Finance Group]
Parece bom, qual é o motivo do uso dos 62 estoques de tecnologia, e não de 500 ações?
[Cópias de resposta do LinkedIn Computational Finance Group]
Oi JZ, essa é uma boa pergunta e fico feliz que você tenha perguntado. Debatimos a nossa abordagem e uma opinião externa seria muito apreciada. Limitamos nossa amostra de teste a apenas um setor devido a dois motivos:
1) Acreditamos que as árvores de decisão que utilizam Indicadores Fundamentais podem variar drasticamente entre diferentes indústrias. Isso ocorre porque as proporções financeiras podem variar entre diferentes indústrias e pensamos que um investidor que use essa abordagem desejaria evoluir árvores de decisão para cada setor de forma independente. ** e.
2) Nós só recebemos três semanas para completar a tarefa e nos preocupava que adicionar mais ações seria muito demorado. Isso resultou ser uma preocupação infundada, uma vez que nossa implementação poderia facilmente lidar com todos os 500 estoques no S & amp; P500 sem problemas de desempenho significativos.
** Nota: isso não se aplica a árvores de decisão usando indicadores de Análise Técnica.
Extremamente interessante. Bom Stuart.
É um exercício interessante, mas não vejo qual a vantagem do GP em simplesmente treinar toda a Árvore de Decisão usando alguma medida de impureza. Parece que faz o mesmo apenas de forma muito ineficiente e provavelmente com menos precisão também.
Oi, Ignas, para ser perfeitamente honesto, o GP sofre muitas desvantagens e a técnica ainda está sendo aperfeiçoada. Tendo sido dito, os métodos tradicionais de indução de árvores de decisão (que eu sou mais recentemente um fã de) também têm suas desvantagens que podem (ou não) ser superadas pela programação genética.
Estou tentando implementar o GA em python. Quais são algumas bibliotecas de python que você recomendaria.
Você tentou trocar seu sistema ao vivo?
Oi Lawrence, infelizmente não. Este post tem muitos anos e representa um antigo projeto coletivo meu :-). Eu recomendaria dar uma olhada no Genotick para uma estratégia de negociação baseada na programação genética imparcial. Eu acredito que as pessoas estão negociando ao vivo.
Envie um comentário.
Cancelar resposta.
Siga a Turing Finance.
Turing Finance Mailing List.
Amigos da Turing Finance.
Quantocracy é o melhor agregador de blog de finanças quantitativas com links para novas análises postadas todos os dias.
NMRQL é o fundo hedge quantitativo de que sou parte. Usamos a aprendizagem de máquinas para tentar vencer o mercado.
Comments
Post a Comment