понедельник, 25 июня 2018 г.

Comparação de algoritmos genéticos para estratégias de negociação


Usando Algoritmos Genéticos para Prevê os 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 possa ter tornado o homem menos inteligente em escolher ações, a teoria de Charles Darwin é bastante eficaz quando aplicada de forma mais direta. (Para ajudar você a escolher ações, confira Como escolher um estoque.)


O que são algoritmos genéticos?


Nos mercados financeiros, os algoritmos genéticos são mais comumente usados ​​para encontrar os melhores valores de combinação de parâmetros em uma regra de negociação, e podem ser incorporados em modelos ANN projetados para selecionar ações e identificar negociações. Vários estudos demonstraram que estes métodos podem ser eficazes, incluindo "Algoritmos Genéticos: Gênese da Avaliação de Estoque" (2004) por Rama, e "As Aplicações de Algoritmos Genéticos na Otimização de Mineração de Dados do Mercado de Ações" (2004) por Lin, Cao, Wang Zhang. (Para saber mais sobre a ANN, consulte Redes neurais: previsão de lucros.)


Como funcionam os algoritmos genéticos.


Por exemplo, uma regra de negociação pode envolver o uso de parâmetros como Média móvel de divergência de convergência (MACD), Média móvel exponencial (EMA) e Estocástica. Um algoritmo genético introduziria valores nesses parâmetros com o objetivo de maximizar o lucro líquido. Com o tempo, pequenas mudanças são introduzidas e aquelas que têm um impacto desejável são mantidas 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 uma mutação biológica e são usadas para manter a diversidade genética de uma geração para outra, introduzindo pequenas mudanças aleatórias. As seleções são o estágio no qual os genomas individuais são escolhidos de uma população para posterior reprodução (recombinação ou cruzamento).


Esses três operadores sã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 é estabelecido com n elementos cada. Selecione os cromossomos, ou parâmetros, que aumentam os resultados desejáveis ​​(presumivelmente lucro líquido). Aplique operadores de mutação ou cruzamento aos pais selecionados e gere uma descendência. Recombine os descendentes e a população atual para formar uma nova população com o operador de seleção. Repita os passos dois a quatro.


Com o tempo, esse processo resultará em cromossomos (ou parâmetros) cada vez mais favoráveis ​​para uso em uma regra comercial. O processo é encerrado quando um critério de parada é atendido, o que pode incluir tempo de execução, adequação, número de gerações ou outros critérios. (Para mais informações sobre o MACD, leia Trading The MACD Divergence.)


Usando Algoritmos Genéticos na Negociação.


Ao usar esses aplicativos, os comerciantes podem definir um conjunto de parâmetros que são otimizados usando um algoritmo genético e um conjunto de dados históricos. Alguns aplicativos podem otimizar quais parâmetros são usados ​​e os valores para eles, enquanto outros são principalmente focados 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 das negociações do programa.)


Dicas e truques importantes 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 alterações no preço de um determinado título. Por exemplo, experimente diferentes indicadores e veja se algum deles parece se correlacionar com as principais viradas do mercado.


Incorporando o processo de decisão de Markov em algoritmos genéticos para formular estratégias de negociação para os mercados de ações.


Destaques.


O artigo propôs um novo aplicativo para incorporar o processo de decisão de Markov em algoritmos genéticos para desenvolver estratégias de negociação de ações.


Isso prevê os resultados da aplicação do processo de decisão de Markov com poder computacional em tempo real para ajudar os investidores a formular o timing correto (ajuste de portfólio) e estratégias de negociação (comprar ou vender).


Este estudo utiliza, assim, a excelente capacidade de busca paralela de espaço no algoritmo genético para fornecer aos investidores a estratégia ideal de seleção de ações e alocação de capital, combinando-os com os dois construtos para resolver o problema do portfólio e melhorar o retorno do investimento para os investidores.


Esta pesquisa pode resolver a seleção de ações, o timing do mercado e a alocação de capital ao mesmo tempo para os investidores ao investir no mercado de ações.


Com a chegada de baixas taxas de juros, os investidores entraram no mercado de ações para buscar retornos mais elevados. No entanto, o mercado de ações mostrou-se volátil, e só raramente os investidores poderiam obter retornos excedentes quando negociados em tempo real. A maioria dos investidores usa indicadores técnicos para cronometrar o mercado. No entanto, o uso de indicadores técnicos está associado a problemas, como a seleção de indicadores, o uso de indicadores conflitantes versus indicadores semelhantes. Os investidores, portanto, têm dificuldade em confiar em indicadores técnicos para tomar decisões de investimento no mercado de ações.


Esta pesquisa combina o processo de decisão de Markov e os algoritmos genéticos para propor uma nova estrutura analítica e desenvolver um sistema de apoio à decisão para a elaboração de estratégias de negociação de ações. Essa investigação usa as características de previsão e os recursos de análise em tempo real do processo de decisão de Markov para tomar decisões de tempo. A seleção de ações e a alocação de capital empregam a codificação de strings para expressar diferentes estratégias de investimento para algoritmos genéticos. Os recursos de pesquisa paralela de algoritmos genéticos são aplicados para identificar a melhor estratégia de investimento. Além disso, quando os investidores não têm dinheiro e estoque suficientes, a arquitetura deste estudo pode concluir a transação por meio de transações de crédito. Os experimentos confirmam que o modelo apresentado nesta pesquisa pode render maiores recompensas que outros benchmarks.


Desenvolvendo Estratégias de Negociação de Alto Desempenho com Programação Genética.


Um dos aspectos frustrantes da pesquisa e do desenvolvimento dos sistemas de negociação é que nunca há tempo suficiente para investigar todas as interessantes ideias comerciais que se deseja explorar. No início dos anos 1970, quando um sistema de crossover de média móvel era considerado o estado da arte, era relativamente fácil desenvolver estratégias lucrativas usando indicadores técnicos simples. Na verdade, a pesquisa mostrou que a rentabilidade das regras de negociação simples persistiu em mercados cambiais e outros mercados por um período de décadas. Mas, coincidentes com o advento do PC no final da década de 1980, tais estratégias simples começaram a falhar. A ampla disponibilidade de dados, ferramentas analíticas e poder de computação contribuiu, sem dúvida, para o aumento da eficiência dos mercados financeiros e complicou a busca de idéias comerciais lucrativas. Estamos agora em um estágio em que é possível reunir uma equipe de 5 a 6 pesquisadores / desenvolvedores, usando técnicas avançadas de pesquisa e tecnologias de computação, de 12 a 18 meses e centenas de milhares de dólares, para desenvolver uma estratégia de protótipo. E não há garantia de que o resultado final produza os retornos de investimento necessários.


O alongamento dos prazos de entrega e o aumento do custo e do risco da pesquisa de estratégia obrigaram as empresas de trading a explorar as possibilidades de acelerar o processo de P & D. Uma dessas abordagens é a Programação Genética.


Primeiras Experiências com Programação Genética.


Conheci pela primeira vez a abordagem do GP para a estratégia de investimento no final dos anos 90, quando comecei a trabalhar com Haftan Eckholdt, então chefe de neurociência na Universidade Yeshiva, em Nova York. Haftan havia proposto a criação de estratégias de negociação, aplicando o tipo de técnicas amplamente utilizadas para analisar conjuntos de dados volumosos e altamente complexos em pesquisa genética. Eu estava extremamente cético em relação à ideia e passei os próximos 18 meses chutando os pneus com muita força, em nome de um investidor interessado. Embora os resultados do Haftan parecessem promissores, eu tinha quase certeza de que eles eram o produto da chance aleatória e comecei a elaborar testes que demonstrassem isso.


Um dos desafios que criei foi criar conjuntos de dados nos quais séries de ações reais e sintéticas fossem misturadas e dadas ao sistema de avaliação. Para o olho humano (ou planilha do analista), as séries sintéticas eram indistinguíveis do real. Mas, na verdade, eu “plantei” alguns padrões dentro dos processos das ações sintéticas que os fizeram ter um desempenho diferente de seus colegas da vida real. Alguns dos padrões que criei foram bastante simples, como a introdução de um componente de deriva. Mas outros padrões foram mais nuançados, por exemplo, usando um gerador de movimento browniano fractal para induzir memória longa no processo de volatilidade das ações.


Foi quando vi o sistema detectar e explorar os padrões enterrados nas séries sintéticas para criar estratégias sensatas e lucrativas às quais comecei a prestar atenção. Pouco tempo depois, Haftan e eu juntamos forças para criar o que se tornou o Fundo Proteom.


O fato de Proteom ter sido bem sucedido foi um testemunho não só da engenhosidade de Haftan como pesquisador, mas também de suas habilidades como programador e técnico. O processamento de tão grandes volumes de dados foi um tremendo desafio naquela época e exigiu um cluster de 50 cpu em rede e mantido com uma quantidade razoável de patch cable e cola. Nós abrigamos o cluster em um armazém infestado de ratos no Brooklyn que tinha uma visão muito agradável de Manhattan, mas não a / c. O calor jogado fora do aglomerado era imenso e, quando combinado com uma música rap muito alta, tocada nas paredes pelos estúdios de música vizinhos, o efeito era debilitante. Como você pode imaginar, reuniões com investidores foram uma experiência altamente imprevisível. Felizmente, o intelecto de Haftan foi acompanhado por suas imensas reservas de coragem e paciência e conseguimos atrair investimentos de vários investidores institucionais importantes.


A abordagem de programação genética para construir modelos de negociação.


A programação genética é uma metodologia algorítmica baseada em evolução que pode ser usada de uma forma muito geral para identificar padrões ou regras dentro de estruturas de dados. O sistema GP recebe um conjunto de instruções (tipicamente operadores simples como adição e subtração), algumas observações de dados e uma função de adequação para avaliar quão bem o sistema é capaz de combinar as funções e dados para atingir um objetivo especificado.


No contexto da estratégia de negociação, as observações de dados podem incluir não apenas dados de preços, mas também volatilidade de preços, médias móveis e uma variedade de outros indicadores técnicos. A função de fitness poderia ser algo tão simples como o lucro líquido, mas poderia representar medidas alternativas de rentabilidade ou risco, com fatores como PL por comércio, taxa de ganhos ou redução máxima. Para reduzir o risco de ajuste excessivo, costuma-se limitar os tipos de funções que o sistema pode usar para operadores simples (+, -, /, *), expoentes e funções trigonométricas. O comprimento do programa também pode ser limitado em termos das linhas máximas permitidas de código.


Podemos representar o que está acontecendo usando um gráfico de árvore:


Neste exemplo, o sistema GP está combinando vários operadores simples com as funções trigonométricas Sin e Cos para criar um sinal que compreende uma expressão em duas variáveis, X e Y, que podem ser, por exemplo, preços de ações, médias móveis ou indicadores técnicos de momentum ou reversão à média.


O aspecto "evolucionário" do processo GP deriva da idéia de que um sinal ou modelo existente pode ser mutado substituindo nós em uma ramificação de uma árvore, ou até mesmo uma ramificação inteira por outra. O desempenho do sistema é reavaliado usando a função de fitness e as mutações mais rentáveis ​​são mantidas para geração adicional.


Os modelos resultantes são muitas vezes altamente não lineares e podem ser muito gerais na forma.


Nos últimos quinze anos, houve enormes avanços no campo da programação genética, em termos de teoria e prática. Usando uma única CPU hiper-threaded, agora é possível que um sistema GP gere sinais a uma taxa muito mais rápida do que era possível no cluster do Proteom de 50 CPUs em rede. Um pesquisador pode desenvolver e avaliar dezenas de milhões de algoritmos de negociação possíveis com o espaço de algumas horas. Implementar uma estratégia completamente pesquisada e testada agora é viável em questão de semanas. Não há dúvidas sobre o potencial da GP em produzir reduções drásticas nos prazos e custos de P & D. Mas isso funciona?


Para resolver essa questão, resumi abaixo os resultados de desempenho de um sistema de daytrading desenvolvido pela GP que comercializa nove mercados de futuros diferentes: Petróleo (CL), Euro (EC), E-Mini (ES), Ouro (GC), Óleo de Aquecimento (HO), café (KC), gás natural (GN), notas de dez anos (TY) e títulos (US). O sistema comercializa um contrato único em cada mercado individualmente, indo longo e curto várias vezes ao dia. Apenas o período mais líquido em cada mercado é negociado, o que normalmente coincide com a sessão de discursos abertos, com todas as posições abertas sendo encerradas no final da sessão usando ordens de mercado. Com exceção dos mercados NG e HO, que são inseridos usando ordens stop, todos os mercados são entrados e saídos usando ordens limite padrão, a preços determinados pelo sistema.


O sistema foi construído usando dados de barra de 15 minutos de janeiro de 2006 a dezembro de 2011 e testado fora de amostra de dados de janeiro de 2012 a maio de 2014. O intervalo de dados em amostra foi escolhido para cobrir períodos de estresse de mercado extremo, como bem como condições de mercado menos voláteis. Um longo período fora da amostra, quase metade do período da amostra, foi escolhido para avaliar a robustez do sistema.


O teste fora da amostra foi “duplo-cego”, significando que os dados não foram usados ​​na construção dos modelos, nem o desempenho fora da amostra foi avaliado pelo sistema antes de qualquer modelo ser selecionado.


Os resultados de desempenho são líquidos de comissões de negociação de $ 6 por volta e, no caso de HO e NG, derrapagem adicional de 2 ticks por turno.


(clique na tabela para uma visualização de maior definição)


A característica mais marcante da estratégia é a alta taxa de retornos ajustados ao risco, medida pelo índice de Sharpe, que excede 5 em ambos os períodos dentro da amostra e fora da amostra. Essa consistência é um reflexo do fato de que, enquanto os retornos líquidos caem de uma média anual de mais de 29% na amostra para cerca de 20% no período de 2012, a volatilidade da estratégia também cai de 5,35% para 3,86%. os respectivos períodos. A redução do risco no período fora da amostra também se reflete em níveis mais baixos de Valor em risco e Drawdown.


Um declínio no PL médio por negociação de US $ 25 para US $ 16 compensou em algum grau por um ligeiro aumento na taxa de negociação, de 42 para 44 negócios por dia, em média, enquanto a taxa de ganho diário e as negociações rentáveis ​​permanecem consistentes em torno de 65% e 56%, respectivamente.


No geral, o sistema parece não só ser altamente lucrativo, mas também extremamente robusto. Isso é impressionante, uma vez que os modelos não foram atualizados com dados após 2011, permanecendo estáticos durante um período quase a metade do tempo de extensão dos dados usados ​​em sua construção. É razoável esperar que o desempenho fora da amostra seja melhorado, permitindo que os modelos sejam atualizados com dados mais recentes.


Benefícios e riscos da abordagem do GP para o desenvolvimento do sistema de negociação.


Os benefícios potenciais da abordagem de GP para o desenvolvimento de sistemas de negociação incluem velocidade de desenvolvimento, flexibilidade de design, generalidade de aplicativos em todos os mercados e teste e implantação rápidos.


E quanto ao lado negativo? A preocupação mais óbvia é o risco de adaptação excessiva. Ao permitir que o sistema desenvolva e teste milhões de modelos, existe um risco distinto de que os sistemas resultantes possam estar muito próximos dos dados da amostra e não conseguirão manter o desempenho quando enfrentarem novas condições de mercado. É por isso que, é claro, mantemos uma quantidade substancial de dados fora da amostra, a fim de avaliar a robustez do sistema de negociação. Mesmo assim, dado o enorme número de modelos avaliados, ainda existe um risco significativo de ajuste excessivo.


Outra desvantagem é que, devido à natureza do processo de modelagem, pode ser muito difícil entender, ou explicar aos potenciais investidores, a “hipótese do mercado” que sustenta qualquer modelo específico. "Nós testamos e isso funciona" não é uma explicação particularmente esclarecedora para os investidores, que estão acostumados a apresentar um quadro teórico mais articulado ou uma tese de investimentos. Não ser capaz de explicar com precisão como um sistema gera dinheiro é preocupante o suficiente nos bons tempos; Mas, em tempos ruins, durante uma redução prolongada, é provável que os investidores se agitem muito rapidamente, caso não existam explicações. Infelizmente, avaliar a questão de saber se um período de desempenho insatisfatório é temporário ou o resultado de uma falha no modelo pode ser um processo complicado.


Finalmente, em comparação com outras técnicas de modelagem, os modelos GP sofrem com a incapacidade de atualizar facilmente os parâmetros do modelo com base em novos dados assim que se tornam disponíveis. Normalmente, como modelo de GP será reconstruído a partir do zero, muitas vezes produzindo resultados muito diferentes de cada vez.


Apesar das muitas limitações da abordagem GP, as vantagens em termos de velocidade e custo de pesquisar e desenvolver sinais e estratégias originais de negociação tornaram-se cada vez mais atraentes.


Dado os vários êxitos bem documentados da abordagem do GP em campos tão diversos como a genética e a física, penso que uma posição apropriada a levar em relação às aplicações na pesquisa de mercado financeiro seria um otimismo cauteloso.


Gerenciamento de Risco de Fundos de Hedge Usando Algoritmos Neurais e Genéticos Difusos.


14 páginas Postado em: 24 ago 2004.


Clemens Glaffig.


Panathea Capital Partners.


Data de Escrita: 20 de agosto de 2004.


O artigo investiga o uso de algoritmos de aprendizado adaptativo na construção de portfólios dinâmicos, replicando as características de retorno de um determinado hedge fund. A ênfase recai sobre os recursos preditivos condicionais da amostra, conforme necessário, para servir como uma ferramenta valiosa de gerenciamento de riscos, em vez de simplesmente explicar o comportamento do fundo de hedge durante um período de amostragem. Os algoritmos aprendem regras e estratégias de negociação dinâmicas, juntamente com os fatores que os baseiam, dentro de um mecanismo integrado de aprendizado. Assim, generaliza abordagens anteriores explorando uma ampla classe de estratégias de negociação não-lineares e dinâmicas para participar na explicação e previsão do comportamento dos fundos de hedge. As capacidades preditivas condicionais dos algoritmos podem ser especificamente empregadas para quantificar o comportamento futuro do fundo. Será útil na construção de medidas de risco quantitativas para fundos de hedge individuais. O artigo também fornece alguns dados empíricos para o comportamento fora da amostra deste método.


Palavras-chave: Fundos hedge, gerenciamento de risco, redes neurais difusas, algoritmos genéticos.


Classificação JEL: C00, C13, C22, C30, C32, C39, C40, C45, C53, G00, G10.


O R Trader.


Usando R e ferramentas relacionadas em Finanças Quantitativas.


Usando Algoritmos Genéticos em Negociação Quantitativa.


A questão que sempre deve ser feita ao usar indicadores técnicos é o que seria um critério objetivo para selecionar os parâmetros dos indicadores (por exemplo, por que usar um RSI de 14 dias em vez de 15 ou 20 dias?). Os algoritmos genéticos (GA) são ferramentas adequadas para responder a essa pergunta. Nesta publicação, eu mostro como configurar o problema em R. Antes de prosseguir o lembrete habitual: O que eu apresento nesta publicação é apenas um exemplo de brinquedo e não um convite para investir. Também não é uma estratégia acabada, mas uma ideia de pesquisa que precisa ser mais pesquisada, desenvolvida e adaptada às necessidades individuais.


O que são algoritmos genéticos?


A melhor descrição do GA que encontrei vem da Cybernatic Trading, um livro de Murray A. Ruggiero. Algoritmos genéticos foram inventados por John Holland em meados de 1970 para resolver problemas difíceis de otimização. Este método usa a seleção natural, sobrevivência do mais apto & # 8221;. O processo geral segue os passos abaixo:


Codifique o problema nos cromossomos Usando a codificação, desenvolva uma função de aptidão para uso na avaliação do valor de cada cromossomo na resolução de um determinado problema. Inicialize uma população de cromossomos. Avalie cada cromossomo na população. Crie novos cromossomos acoplando dois cromossomos. Isso é feito por muting e recombinação de dois pais para formar dois filhos (os pais são selecionados aleatoriamente, mas tendenciosos por sua aptidão) Avalie o novo cromossomo Exclua um membro da população que seja menos adequado do que o novo cromossomo e insira o novo cromossomo na população . Se o critério de parada for atingido (número máximo de gerações, os critérios de aptidão são bons o suficiente & # 8230;) então retorne o melhor cromossomo ou vá para o passo 4.


A partir de uma perspectiva comercial, a GA é muito útil porque são boas em lidar com problemas altamente não-lineares. No entanto, eles exibem algumas características desagradáveis ​​que merecem destaque:


Sobreposição: Este é o principal problema e é para o analista configurar o problema de forma a minimizar esse risco. Tempo de computação: Se o problema não for definido corretamente, pode ser extremamente longo para chegar a uma solução decente e a complexidade aumenta exponencialmente com o número de variáveis. Daí a necessidade de selecionar cuidadosamente os parâmetros.


Existem vários pacotes R que lidam com GA, eu escolhi usar o mais comum: rgenoud.


Preços de fechamento diários para a maioria dos ETFs líquidos do Yahoo finance, que remontam a janeiro de 2000. O período de amostragem vai de janeiro de 2000 a dezembro de 2010. O período fora da amostra começa em janeiro de 2011.


A lógica é a seguinte: a função de adequação é otimizada durante o período de amostragem para obter um conjunto de parâmetros ótimos para os indicadores técnicos selecionados. O desempenho desses indicadores é então avaliado no período fora da amostra. Mas, antes disso, os indicadores técnicos devem ser selecionados.


O mercado de ações exibe duas características principais que são familiares para qualquer pessoa com alguma experiência comercial. Momento a longo prazo e reversão de curto prazo. Essas características podem ser traduzidas em termos de indicadores técnicos por: médias móveis cruzadas e RSI. Isto representa um conjunto de 4 parâmetros: Períodos de look-back para médias móveis de longo e curto prazo, período de retorno para o RSI e limiar RSI. Os conjuntos de parâmetros são os cromossomos. O outro elemento-chave é a função de fitness. Podemos querer usar algo como: máximo retorno ou taxa de Sharpe ou rebaixamento médio mínimo. No que se segue, escolhi maximizar a proporção de Sharpe.


A implementação de R é um conjunto de 3 funções:


fitnessFunction: define a função de fitness (por exemplo, taxa máxima de Sharpe) para ser usado no comércio de motores GA: estatísticas de negociação para os períodos de entrada e saída de amostra para fins de comparação genoud: o mecanismo GA do pacote rgenoud.


A função genoud é bastante complexa, mas eu não vou explicar o que cada parâmetro significa, pois quero manter este post curto (e a documentação é realmente boa).


Na tabela abaixo, apresento para cada instrumento os parâmetros ótimos (período de retorno de RSI, limite de RSI, Média de Mudança de Curto Prazo e Média de Mudança de Longo Prazo), juntamente com as estatísticas de negociação dentro e fora da amostra.


Usando a programação genética para evoluir estratégias de negociação.


Recentemente, um amigo e eu trabalhamos juntos em uma tarefa de pesquisa na qual utilizamos com sucesso a Programação Genética (GP) para desenvolver soluções para um problema de classificação financeira do mundo real. Esse problema, chamado de análise de segurança, envolve determinar quais títulos devem ser comprados para obter um bom retorno sobre o investimento no futuro. Para encontrar uma solução para esse problema, usamos a Programação Genética para desenvolver uma população de árvores de decisão que poderia realizar análises de segurança em 62 das ações de tecnologia listadas no S & P 500. Ou seja, desenvolvemos árvores de decisão capazes de classificar essas ações de acordo com se eles devem ser comprados ou vendidos a descoberto.


Á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. A primeira utilizou apenas indicadores da análise fundamental e a segunda utilizou apenas indicadores da análise técnica. A análise fundamental é um método de avaliar 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, analisando as 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 várias regras para tomar decisões de investimento. Essa estratégia pode ser representada como uma árvore de decisão em que 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 este fato, muitas estratégias de investimento existentes são representadas na forma de árvores de decisão.


No total, quarenta e dois indicadores diferentes foram selecionados e utilizados a partir de análise técnica e análise fundamentalista. As estratégias evoluídas foram para um período fixo de retenção de três meses, seis meses, nove meses ou doze meses de duração. As árvores de decisão foram testadas novamente usando dados de mercado de 2011 a 2013.


Programação Genética.


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 único (geralmente codificado como um vetor). Algoritmos Genéticos modelam o processo de evolução genética através de um número de operadores incluindo o operador de seleção que modela a sobrevivência do mais apto, o operador de 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 chamam de Algoritmo Genético.


Os três operadores de um Algoritmo Genético aplicado a uma população de vetores (blocos)


A diferença entre um Algoritmo Genético e o Algoritmo de Programação Genética é a maneira pela qual os genótipos individuais são representados. Nos genótipos de Algoritmos Genéticos são representados como Strings ou como Vetores, enquanto na Genetic Programming estes genótipos são representados usando estruturas de dados de árvores. A operação de cruzamento em estruturas de árvore 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 gestão de investimentos, desde que sejam obtidas melhores funções para calcular a adequação. Ao longo de nossa pesquisa, vimos que as árvores de decisão evoluídas usando a Programação Genética foram capazes de produzir classificações de ações que superaram consistentemente o retorno médio do mercado ao longo dos quatro trimestres. Isso é verdade para as árvores de decisão que usaram indicadores técnicos, bem como árvores de decisão que usaram indicadores fundamentais. Uma série de outras conclusões foram derivadas de nossa pesquisa, incluindo os tamanhos e o nível ideais de heterogeneidade para as árvores de decisão e o valor agregado pelos diferentes indicadores e o desempenho das estratégias em relação um ao outro. Alguns resultados estão incluídos abaixo.


Relação entre o tamanho da árvore de decisão e a adequação Indicadores mais populares usados ​​na árvore de decisão final.


Tamanhos médios de árvore 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 por meu amigo. Ambos os relatórios apresentam muito mais detalhes sobre o 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 futuras pesquisas. Você também pode baixar uma cópia do código-fonte criado durante a implementação. Para meus colegas mais técnicos do projeto, por favor clique aqui.


História anterior


Clustering usando o Ant Colony Optimization.


Próxima história.


Sistemas Inteligentes de Negociação Algorítmica.


[Comentário copiado do LinkedIn Computational Finance Group]


Muito bom trabalho. O escrever é lindo também.


Eu só tive a chance de olhar para o relatório. Algumas estatísticas que seria bom analisar: como sua carteira de GA se compara a portfólios dos mesmos ativos. Eu olharia para dois portfólios de comparação: um portfólio ponderado igual e um portfólio de estilo S & amp; P que é ponderado pela capitalização de mercado.


Como se vê, pode ser surpreendentemente difícil superar um portfólio igualmente ponderado. Reequilibre as carteiras trimestralmente, uma vez que algumas ações irão subir e algumas cairão (por exemplo, você deseja manter os pesos da carteira iguais, à medida que os preços mudam). Se o seu algoritmo genético bate esses portfólios, então você tem "alfa" (excesso de retorno sobre o benchmark).


Claro que alfa não é tudo. Você deve observar a Perda Esperada de Cauda (ETL) (também conhecida como CVaR, Expected Shortfall) para a carteira GA e o "benchmark". Se você tem menos risco para o mesmo retorno, então você pode considerar que você bateu o benchmark. A medida de ETL é uma medida melhor do que o índice de Sharpe quando se trata de risco, uma vez que o índice de Sharpe mede a variação, que é de dois lados. O ETL mede apenas a perda.


Uma observação: um problema com GA e redes neurais (NN) é que são caixas pretas. É difícil determinar por que eles fazem as "escolhas" que fazem. Então imagine que você é um gerente de portfólio. Seu GA ou NN começa a ter um desempenho ruim. Que passos você pode dar para resolver isso? O problema é que tudo o que você realmente pode fazer é reciclar e não sabe se o treinamento será melhor. Claro que com uma árvore de decisão não é tão ruim, já que pelo menos você sabe quais decisões ela tomou. O problema é que, se você está constantemente mexendo para tomar as decisões certas, então você também tem um problema.


Esses problemas são motivos pelos quais você não vê muito esses algoritmos (embora eles sejam usados).


[Resposta copiada do LinkedIn Computational Finance Group]


Obrigado pelas palavras complementares Ian, agradecemos que você tenha interesse em nossa pesquisa e nos forneça alguns comentários interessantes.


Em nossa abordagem, apenas comparamos o desempenho das seleções de ações feitas por nossas árvores de decisão com um portfólio igualmente ponderado. Estender nossa pesquisa para incorporar diferentes portfólios é uma ideia interessante que será acompanhada durante a próxima fase de desenvolvimento. Também estamos considerando implementar algumas das abordagens bem conhecidas para análise de segurança a serem usadas como benchmarks de desempenho adicionais. Se você ou alguém tiver sugestões sobre quais abordagens podem ser boas referências, informe-nos.


Seus comentários sobre o uso de outras medidas de desempenho estão corretos. Gostaríamos, definitivamente, de olhar para a estrutura de teste de retorno e investigar formas de torná-lo mais rigoroso e menos propenso a ajustes excessivos. Também gostaríamos de implementar funções de adequação adicionais que levem em consideração medidas de risco de portfólio, bem como medidas de excesso de retorno (alfa). Examinarei as medidas que você mencionou e veremos como podemos incorporá-las melhor em nossa estrutura existente. Também estaremos considerando como seria possível usar um framework de back-testing open source como o ZipLine, a estrutura de back-testing usada pelo quantopian.


Suas observações sobre a natureza e o uso de redes neurais e geográficas em finanças são muito interessantes. O desafio de tornar esses algoritmos mais transparentes e, francamente, um pouco menos assustador, não é para ser tomado de ânimo leve. Meu colega está atualmente trabalhando em uma tarefa de pesquisa em que ele está tentando levantar o véu em alguns dos trabalhos internos das Redes Neurais. Se ele for bem-sucedido, em vez de precisar treinar redes neurais constantemente quando algo der errado, ele poderá isolar a causa do problema na rede neural e adaptar sua arquitetura de acordo. Ele está pensando em usar uma aplicação financeira do mundo real das Redes Neurais em sua pesquisa. Então, se você tem alguma idéia sobre isso, por favor me avise?


Pessoalmente falando, estou atualmente trabalhando em uma tarefa de pesquisa em que estou tentando construir uma estrutura algorítmica para a seleção e otimização de portfólios de carry trade. Ele faz uso de alguns algoritmos de Inteligência Computacional e daqui para frente vou ter em mente os problemas que você mencionou. Tentarei identificar formas de mitigar ou eliminar essas preocupações no quadro. Obrigado novamente por todos os seus comentários, agradecemos o feedback. Se você tiver mais boas ideias, entre em contato conosco.


[Comentário copiado do LinkedIn Computational Finance Group]


Acho que a abordagem mais razoável para o backtesting é comparar seus resultados com o que acontece com negociações aleatórias que ainda obedecem a quaisquer restrições que você esteja impondo ao 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 um algoritmo contra uma estratégia de negociação aleatória é conceitualmente semelhante ao teste de um algoritmo de pesquisa contra a pesquisa aleatória. Que é algo que eu fiz antes. Quão popular você diria que a estratégia de backtesting é?


[Resposta copiada do LinkedIn Computational Finance Group]


Stuart: Depressivamente impopular. Mas tem que começar em algum lugar.


[Comentário copiado do LinkedIn Computational Finance Group]


Parece bom, qual é a razão de usar as 62 ações de tecnologia, não 500 ações?


[Cópias de respostas do Grupo de Finanças Computacionais do LinkedIn]


Oi JZ, essa é uma boa pergunta e estou feliz que você tenha perguntado. Debatemos nossa abordagem e uma opinião externa seria muito apreciada. Limitamos nossa amostra de teste a apenas um setor por dois motivos:


1) Acreditamos que as árvores de decisão que usam indicadores fundamentais podem variar drasticamente entre os diferentes setores. Isso ocorre porque o índice financeiro pode variar entre os diferentes setores e achamos que um investidor que usa essa abordagem gostaria de desenvolver árvores de decisão para cada setor de forma independente. ** e.


2) Nós só recebemos três semanas para concluir a tarefa e estávamos preocupados que a adição de mais estoques fosse muito demorada. Isso se tornou uma preocupação infundada, já que nossa implementação poderia lidar facilmente com todas as 500 ações da S & P500, sem problemas significativos de desempenho.


** Nota: isto não se aplica a árvores de decisão usando indicadores de Análise Técnica.


Extremamente interessante. Bem feito Stuart.


É um exercício interessante, mas não vejo qual vantagem o GP tem contra simplesmente treinar o Decision Tree usando alguma medida de impureza. Parece que faz o mesmo de forma muito ineficiente e provavelmente com menos precisão também.


Oi Ignas, para ser perfeitamente honesto, o GP sofre de muitas desvantagens e a técnica ainda está sendo aperfeiçoada. Dito isto, os métodos tradicionais de indução de árvores de decisão (dos quais eu sou mais recentemente fã) também têm suas desvantagens que podem (ou não) ser superadas pela Programação Genética.


Eu estou tentando re implementar o GA em python. Quais são algumas bibliotecas python que você recomendaria.

Комментариев нет:

Отправить комментарий