Sunday 8 April 2018

Sistema de negociação automatizado da rede neural


Entrevista com Leonid Velichkovsky: "O Maior Mito sobre Redes Neurais é Super-Rentabilidade"


- Leonid, você é um representante raro da comunidade de comerciantes, que usam redes neurais para negociação. Estes são desenvolvimentos bastante complicados, mas o exército de seus fãs continua crescendo. O que atrai você em redes neurais?


- Seis anos atrás, no início, as redes neurais me atraíam com a novidade, o caráter misterioso incomum e a lucratividade aparentemente elevada. Ao longo dos anos, muitos mitos desapareceram, mas as redes neurais ainda me atraem com a capacidade de se adaptar a qualquer curva e encontrar padrões onde nada e ninguém mais pode encontrá-los.


- Você poderia contar mais sobre os mitos associados às redes neurais? Você conheceu alguma desilusão neste campo?


- O maior mito associado às redes neurais é a sua super-lucratividade. Mas isso se aplica não apenas às redes neurais, mas ao Forex como um todo. No começo, parece que é fácil de ganhar - comprar e vender, não há nada complicado nele. Mais tarde, no entanto, alguns fatores aparecem, dos quais você nem sabia - só então você começa a compreendê-los e a entender. Nas redes neurais, decepcionante é o que atrai você - sua capacidade de treinar e se adaptar a qualquer mercado com qualquer dado disponível. A sua grande vantagem é uma desvantagem significativa quando aplicada aos mercados financeiros. Esta é uma metamorfose incrível!


- Como você entendeu que as redes neurais não trazem super lucros? Existe alguma experiência pessoal?


- Não há super-lucratividade no Forex também, não só nas redes neurais. Estritamente falando, as redes neurais são os mesmos sistemas de negociação (doravante - TS). Eles usam apenas um neurônio em vez de indicadores comuns. E então, a faceta mais importante é a gestão do dinheiro, ou seja, a "ganância" do comerciante.


Quando você começa a negociar, você não tem o conceito de gerenciamento de dinheiro como tal. Mas então você percebe a necessidade dessa ferramenta. O trabalho sobre Forex e, geralmente, nos mercados financeiros, está sempre relacionado a riscos. Você deve estar ciente de que o risco de US $ 100 e US $ 100.000 são duas coisas diferentes. Quando eu negociava em um depósito inicial de 100, 500 e até mil dólares, havia certo risco, e toda a abordagem de negociação era específica. E quando comecei a negociar montantes maiores, a atitude em relação à negociação tornou-se algo bastante diferente - o nível de risco aumentou e eu rapidamente entendi que poderia perder tudo. Uma certa responsabilidade veio com isso.


Por exemplo, ao negociar no depósito de US $ 100, o lucro de 100% ao ano dificilmente pode ser satisfatório, penso eu. Mas a negociação no depósito de US $ 100.000 com um lucro de 100% ao ano não é ruim. Assim, há um tipo de conflito psicológico - os comerciantes que trocam pequenos depósitos, procuram ganhar o mais rápido e o mais possível. Isso empurra os comerciantes para ir além de todos os riscos possíveis. O resultado é a perda natural de depósito! Portanto, acredito, o comércio de pequenos depósitos está condenado ao fracasso devido ao desejo natural de um comerciante de ganhar o mais rápido e o mais possível. E US $ 100, por exemplo, não é uma quantidade suficientemente grande para mantê-lo afastado de riscos.


- Nos últimos seis anos, você trabalhou com redes neurais na negociação. Como você cria essas misteriosas redes neurais? O que você usa?


- Não sou programador, sou comerciante. Programar redes neurais e utilizá-las nos mercados financeiros são coisas completamente diferentes. Os programadores me ajudam a desenvolver Expert Advisors - Roman Kramar (bstone), Yuri Zaitsev (YuraZ), Victor Nikolaev (Vinin) e Dmitriy Fedoseev (Integer). Todos eles são profissionais em seu campo, eu não preciso explicar muito - eles sabem tudo perfeitamente bem. E sou muito grato a todos por seu trabalho e profissionalismo.


Além disso, eu colaborei e continue trabalhando com Steve Ward (Ward Systems Group) e Sergei Dolenko (Neuroproject) que me deram informações inestimáveis ​​sobre a aplicação de redes neurais nos mercados financeiros. Além disso, trabalhei em estreita colaboração com Dennis Meyers (Meyers Analytics), Philippe Lonjoux (Noxa Analytics, Inc.) e Mark Simpson (Bowfort Technologies Inc.), com quem testei novos sistemas e indicadores.


Gostaria de notar que a aplicação de redes neurais nos mercados financeiros possui muitos recursos e conceitos e técnicas inovadoras, e difere muito do seu uso em outras áreas.


Eu uso MetaTrader 4, é claro; Agora eu tento fazer amizade com o MetaTrader 5. Outra ferramenta indispensável para o trabalho é a NeuroShell, sem a qual não posso fazer. Uso o MTFeed como uma ponte entre o MetaTrader 4 e o NeuroShell.


- Existem muitos métodos de treinamento de redes neurais. Leonid, como você os treina? E, finalmente, a questão que tormenta muitos iniciantes no comércio de redes neurais: como evitar o chamado "treinamento excessivo"?


- É uma questão complicada, à qual eu (e não só eu) não tenho resposta e que é impossível sistematizar claramente. No entanto, vou tentar abordar os principais problemas de treinamento e formas de evitar o excesso de treinamento. Devido à sua forte não-linearidade e à capacidade de adaptação a qualquer dado, uma rede neural é muito bem ajustada, treinada e, como conseqüência, superada. Uma rede neural com apenas alguns neurônios em sua camada interna facilmente se lembra da história de alguns milhares de barras. Deve-se notar que o "excesso de treinamento" é inerente às redes neurais somente quando aplicado aos mercados financeiros. O que isto significa? Todos sabemos que o mercado muda ao longo do tempo - o que aconteceu no passado desaparecerá no futuro. Bem, ele existirá, mas um pouco diferente, não haverá correspondências de 100 por cento. Padrões, leis, áreas de mercado - tudo isso será diferente em diferentes partes do mercado.


Consequentemente, se uma rede neural aprende as lições (exemplos) do passado muito bem ao ser treinada em dados de histórico, no final pode simplesmente deixar de notar ou identificar novos padrões e áreas de mercado no futuro. Porque todos eles sofreram algumas mudanças. Ou seja, a rede neural adaptou-se muito bem às condições do mercado, que existiram no passado, mas não conseguiu reconhecer os novos padrões nas condições de mercado alteradas.


Existem maneiras de evitar o excesso de treinamento? Há muitas maneiras, mas as principais são duas delas: a parada precoce do treinamento e o aumento do intervalo de treinamento. No entanto, ambos os métodos têm suas graves desvantagens. No início da parada, há perguntas difíceis, para as quais não há resposta: em que ponto devo parar de treinar? Que critérios devem ser usados ​​para isso? Existem muitas respostas para esta questão - use erros, nível de lucro, redução e outros critérios matemáticos. Mas eles não dão uma garantia de cem por cento de paradas oportunas. Portanto, esta parada oportuna de treinamento depende apenas das habilidades do comerciante.


Existe um equívoco de que quanto melhor fosse no passado, melhor será no futuro. Ou quanto menor for o erro no intervalo de treinamento, melhor a rede funcionará no futuro. No entanto, isso não é verdade - o mercado está mudando e, sendo muito bem treinado em dados históricos, uma rede neural pode deixar de ver o futuro. Eu sei, por minha própria experiência, que a proporção de erros por parte do treinamento e lucros no OOS (Out Of Sample - fora do intervalo de otimização) ou em uma conta real é a seguinte: o erro diminui gradualmente com o aumento do tempo de treinamento, mas o lucro primeiro aumenta e depois cai, formando um máximo em um certo momento no tempo. Este é o máximo que precisamos pegar.


Além disso, à medida que o tempo de treinamento aumenta, o erro também diminuirá gradualmente, e o lucro na OOS pode produzir vários mais máximos, mas geralmente são menos do que o primeiro. Embora encontrei uma situação em que o segundo e até o terceiro máximo eram superiores ao primeiro. Mas acredita-se que o primeiro máximo é melhor do que o resto em termos de rentabilidade e eficiência. Na verdade, nossa tarefa é pegar esse primeiro máximo. E depende de habilidades e experiência do comerciante - não conheço nenhum outro critério mais preciso. Embora, é claro, possamos e devemos guiar-nos pela porcentagem de rentabilidade, erro, redução, razão Sharpe e muitos outros parâmetros. Mas, em última instância, depende unicamente do comerciante quais critérios usar. E depende de como ele entende seu TS e sabe como ele se comporta.


Enquanto no intervalo de treinamento, coisas completamente diferentes acontecem. O erro eo lucro se comportam exatamente o oposto - o erro diminui gradualmente, e o lucro aumenta suavemente. Se o lucro aumentar durante a otimização, isso significa que o Consultor Especializado é simplesmente ajustado à curva do mercado, transformando o preço em uma curva suave. Essa curva deve crescer e é chamada de equidade. Na verdade, essa otimização também é para reduzir o erro. E obtemos o seguinte: o maior lucro na seção de treinamento ou otimização é, mais provável que você tenha sobre-treinamento ou sobre otimização (montagem) e, como conseqüência - perdas no futuro.


A segunda maneira de evitar o excesso de treinamento é aumentar o intervalo de treinamento, ou seja, aumentar a quantidade de dados, em que a rede é treinada. Mas este método também tem suas armadilhas. Aumentar a quantidade de dados nos mercados financeiros leva ao fato de que a rede simplesmente pode deixar de ver ou reconhecer esses padrões e áreas de mercado, que existem na seção de treinamento dada. A seção é muito grande para isso. Isso ocorre porque o mercado muda com o tempo. E um padrão específico parece muito "diferente" neste grande intervalo, e a rede não pode definir que esse é o mesmo padrão, que só mudou ao longo do tempo.


Então surge uma questão natural: qual parte do mercado deve ser dada a uma rede de treinamento? Aqui está a resposta: a parte em que a rede reconhece com sucesso padrões e áreas de mercado necessárias para um TS e o comerciante. Isso depende das habilidades de um comerciante - da maneira como ele vê o mercado e quão bem ele pode escolher a parte certa para o treinamento. Na minha experiência, isso é de 500 a 2000 barras dependendo do prazo e do estado do mercado.


Existem algumas maneiras mais de evitar o excesso de treinamento, mas não são tão importantes.


Você vê, muito depende de quão hábil e experiente é um comerciante. Então eu acho que essa profissão exige não só o conhecimento matemático, mas também a criatividade. Também é claro que todos os recursos e nuances do uso de redes neurais, bem como as TSs usuais, decorrem do fato de que o mercado muda ao longo do tempo e o passado nunca se repete exatamente no futuro. Esta característica existe apenas nos mercados financeiros. Há um mito popular que você precisa dar muitos dados a uma rede neural e deixá-lo treinar - ele aprenderá de forma independente o que ele precisa. Para o uso normal das redes neurais, isso pode ser verdade, mas os mercados financeiros têm suas próprias peculiaridades, que descrevi acima, então não é tão fácil neste caso.


Na minha opinião, estas duas formas de evitar o excesso de treinamento também se aplicam à otimização de Expert Advisors comuns, sem redes neurais. O excesso de otimização, ou "ajuste", é específico apenas para os mercados financeiros. E as maneiras de evitá-lo são as mesmas. A essência da sobre-otimização também reside no fato de que a natureza dos mercados financeiros muda no tempo. Estritamente falando, "o mercado não está parado".


- Quais são os erros comuns que um comerciante pode enfrentar ao começar a trabalhar com redes neurais?


A ilusão popular de comerciantes que começam a usar redes neurais e usam dados não normalizados na entrada, tentando obter o preço do próximo bar, é "Hoje será como ontem e amanhã será como hoje" (se considerarmos diariamente bares). Este é um over-training comum de uma rede. Enquanto os dados no Forex não diferem muito um do outro (100 pontos fazem apenas 0,7% do preço), então o erro de treinamento também será pequeno e a rede encontrará rapidamente este mínimo local de treinamento.


- Alguns comerciantes "neurais" usam pré-processamento de dados de entrada. Você usa algo assim nas suas redes neurais?


- De um modo geral, nunca use séries de tempo puro para as entradas de redes neurais. As séries temporais são sempre transformadas por algum indicador, que normaliza os dados em uma determinada linha. Por exemplo, de -100 a 100 ou de -1 a 1. Não é necessária mais normalização, porque se os valores dos indicadores forem maiores que 1, eles sempre podem ser divididos por um número apropriado, para atingir um valor que não exceda 1. I tente fazer a menor alteração de dados de entrada possível, uma vez que qualquer transformação traz distorção não linear linear adicional no sinal de entrada. Isso, portanto, conduz o treinamento incorreto de uma rede neural, uma vez que a distorção pode ser interpretada incorretamente pela rede. Além disso, com fortes transformações e conseqüentemente grandes distorções não-lineares, a rede pode ser treinada não em um sinal de entrada real, mas em distorções não-lineares, o que pode levar a operação incorreta e perda de depósito.


Aqui estão alguns exemplos de distorções não-lineares que são visíveis a olho nu. Tome, por exemplo, os estocásticos habituais. Parece que um indicador tão simples não traria distorções. Mas, em alguns momentos, faz fortes distorções não-lineares, o que pode induzir em erro a rede neural no processo de treinamento e continuar trabalhando em uma conta real.


Essas áreas são marcadas com um oval branco no gráfico. No primeiro caso, o preço aumenta e o indicador estocástico permanece praticamente em seus valores máximos. No segundo caso, o preço é quase num mesmo nível, e o indicador estocástico diminui bruscamente de seus valores máximos para valores mínimos. No primeiro caso, o indicador estocástico não trará nenhuma informação à rede, enquanto no último caso simplesmente o "confundirá". Em ambos os casos, o comportamento do indicador estocástico terá um impacto negativo tanto no treinamento quanto na o trabalho da rede neural em uma conta real. E isso pode levar a perdas financeiras.


Deve-se notar que esses dois exemplos são distorções bastante visíveis que você pode ver facilmente. E há muito mais distorções que não podemos ver e analisar! Acredite em mim. E todas essas distorções (grandes e pequenas) são combinadas entre si. Portanto, seja extremamente cuidadoso ao fazer com o pré-processamento de dados de entrada.


Claro, há indicadores que fazem distorções muito mais fortes. Há também aqueles que fazem menos fortes. No entanto, o fato permanece - a distorção é feita por qualquer indicador. Embora, você pode selecionar parâmetros específicos para qualquer indicador (mesmo estocástico), de modo que ele traga distorções mínimas no sinal original com condições de mercado específicas. Naturalmente, a natureza do mercado pode mudar, e você terá que mudar os parâmetros do indicador para reduzir a distorção introduzida. E nesta situação, uma seleção adequada de parâmetros de indicadores e seu ajuste atempado (tanto de forma automática quanto manual) também são totalmente dependentes das habilidades e experiência de um comerciante.


- Como você avalia os resultados de uma rede neural após o treinamento ou TS após a otimização? Quais são os critérios para usá-los em uma conta real?


Atualmente, quase nunca considero os resultados de um TS, que foram obtidos no intervalo de treinamento (otimização). Eu analiso resultados em OOS ou real, porque acredito que no período de treinamento (otimização), os resultados de um TS não podem dizer nada. Isso pode ser adequado ou excesso de treinamento; e é quase impossível definir se é apropriado ou não. Você só pode defini-lo testando-o no OOS ou melhor em uma conta real. Às vezes, eu simplesmente comparo os resultados da conta real (OOS) e do treinamento (otimização). Portanto, os números mostram patrimônio em uma conta real com a alavancagem comercial de 1: 1 (o uso do depósito é de 1% com a alavancagem de 1: 100 dada pelo centro de negociação). Se aumentarmos a alavancagem, a faixa de capital também aumentará.


Na verdade, analiso os resultados de um TS apenas com a alavancagem de 1: 1, ou seja, com uma gestão de dinheiro "desativada". Uma vez que o gerenciamento de dinheiro pode dar uma idéia errada sobre a retirada real do TS e, consequentemente, uma chamada de margem "inesperada" e outros problemas. Nas figuras, você pode ver o patrimônio com a alavancagem de 1: 1.


A propósito, é o mesmo sistema comercial que participou do ATC 2008, embora com parâmetros ligeiramente modificados.


Recentemente, notei o seguinte: se o fator de lucro for extremamente grande no intervalo de treinamento (otimização) com a alavancagem de 1: 1, podemos dizer com certeza que é sobre-treinamento (sobre otimização). E no futuro, nos dados desconhecidos, o sistema de negociação com esses parâmetros funcionará mal (ou seja, perderá o depósito). Pode-se notar que nos números, o patrimônio sobe sem problemas, em vez de forte. Você poderia concluir que a rentabilidade de um sistema comercial como esse não é bastante pequena. Embora, se você aumentar a alavancagem comercial ou usar uma gestão de dinheiro mais agressiva, os lucros podem aumentar a diversidade. Tudo depende da retirada, que aparece com a alavanca de 1: 1, e a redução permitida por um comerciante.


- Quase dois anos se passaram desde o ATC 2008. Que lições você aprendeu com os resultados desse Campeonato? Por que o seu Expert Advisor não conseguiu o concurso?


O Campeonato é uma competição. Quem não arrisca não petisca. Eu duvidei; e eu excedi todos os riscos possíveis devido à minha gestão de dinheiro. Consegui ganhar 110 mil e, em seguida, caiu para 14,749 devido a essa gestão de dinheiro muito agressiva. Durante 3 meses, o lucro foi de quase 50%, o que foi bastante bom. Mas a redução foi de 92%, o que é inaceitável na vida real. Então, tendo executado a EA com gerenciamento de dinheiro razoável no mesmo período, obtive quase o mesmo resultado de US $ 14.000, mas com uma redução de cerca de 25% - este é um bom resultado para a vida real. A conclusão é que você não deve perseguir o excesso de lucros, caso contrário você pode perder. Mas o Campeonato faz suas próprias regras e, claro, você precisa correr riscos para vencer.


- Alguma coisa mudou fundamentalmente em seus desenvolvimentos durante esse período? Talvez você tenha encontrado algum know-how e aplicado na prática?


Não, na verdade, tudo permanece o mesmo. Nada de novo aconteceu. Além disso, o mesmo Expert Advisor com os mesmos parâmetros ainda pode funcionar, embora eu encontrei outros parâmetros, mais "lucrativos". A essência do mercado não muda - apenas o seu personagem está mudando, o que um comerciante experiente deve acompanhar, ajustando seus TS oportunamente às condições de mercado novas e alteradas.


- O consultor especialista de Alexander Topchylo, vencedor do ATC 2007, consistiu em três subsistemas independentes. Contudo, o autor progrediu nesse sentido e criou um comitê de redes neurais. Você usa esses comitês em seus desenvolvimentos?


- Não, eu me recusei a usar comitês devido a serem difíceis de implementar e manter. Ao longo dos anos, eu usei TSs simples, porque um TS muito complexo, assim como aquele com comitês, não pode garantir um lucro mais estável e maior em comparação com um simples.


- O autor do único consultor especializado em diversas correntes entre os vencedores do ATC, Nikolay Kositsin acredita que as regras do próximo Campeonato são favoráveis ​​às EAs de múltiplas corridas e deixam pouca chance de robôs de moeda única. Você usa multidões em seus Expert Advisors? Em que pares seus EAs trocam?


- É claro que eu os uso. Isso permite operações de hedge e obtenção de uma equidade mais suave. Além disso, se você usa múltiplas moedas para análise, isso ajuda a criar sistemas comerciais mais estáveis ​​e confiáveis. No Campeonato, pretendo negociar EUR / USD, USD / JPY e AUD / USD - depende de como a situação do mercado se aproxima do Campeonato.


- Leonid, obrigado pela entrevista. Boa sorte no Campeonato!


Neste artigo, vamos mostrar como escrever um consultor especializado e evitar erros que possam impedir que você participe no próximo Campeonato Automatizado de Negociação 2018.


Gerenciamento de riscos em negociação automatizada.


A gestão de riscos é um componente essencial de qualquer sistema de negociação. Sem isso, é praticamente impossível imaginar o comércio lucrativo. Neste artigo, desenvolvedores experientes de sistemas de negociação automatizados compartilham suas dicas sobre gerenciamento de riscos com os participantes do Campeonato.


Sistema de negociação automatizado da rede neural.


Sistema de negociação automatizado da rede neural.


Sistema de negociação automatizado da rede neural.


Rede Neural - Forex Algorítmico e Mecânico.


16.11.2004 & # 0183; & # 32; Saiba mais sobre redes neurais, que é um software projetado para simular o cérebro humano, a fim de tomar melhores decisões comerciais.


Redes Neurais para Previsão Financeira - dl. acm.


11.11.2017 & # 0183; & # 32; Negociação automatizada com algoritmo genético Cibernética de risco de rede neuronal: uma aplicação em mercados FX.


Rede Neural e Sistemas de Negociação Baseados em Algoritmos Genéticos.


e sistemas de rede neural artificial (TWEANN) que evoluem em massa para sistemas automatizados automatizados de negociação de moeda Evolving Chart Pattern Sensitive Neural.


Comércio Algorítmico - MATLAB & amp; Simulink - MathWorks.


Capítulo 104 Algoritmo automatizado de negociação de ações usando redes neurais Brett Taylor, Min Kim e Anthony Choi Resumo Uma das muitas aplicações de neural artificial.


Melhorando os sistemas de negociação usando o RSI financeiro.


Ajustando os parâmetros do sistema de negociação automatizado O teste Walk-Forward é um processo contínuo. Cada função de fitness pode ser tratada como sua própria rede neural e.


Negociação automatizada com rede neuronal de algoritmo genético.


Trabalho exigido por grandes redes neurais. A rede de redes neuronais de pesquisa de redes neuronais é uma rede de finanças (por exemplo, sistemas de negociação automatizados).


Sistema Automatizado de Negociação (usando NAR Neural Network.


Evestin Forex | Sistemas de negociação automatizados com caráter. Obtenha 30 dias de Provisão GRATUITA.


Avançar para o teste - Automated Trading System by Jez Liberty.


Sistemas de Negociação de Modelos de Rede Neural, Software de Negociação Avançado: análise técnica e neural, criando assim melhores sistemas de negociação do que aqueles.


Evestin Forex | Sistemas de negociação automatizados com caráter.


20.04.2009 & # 0183; & # 32; Neural Networks não funcionam para negociação. investigou o uso de redes neurais para forex. Na minha primeira tentativa de fazer um sistema de negociação automatizado,


Algoritmo genético e software de rede neural para.


Redes Neurais para Finanças. Neural Trader é uma estrutura de rede neural artificial que foi especialmente concebida para aplicações financeiras Sistema de Negociação.


Redes Neurais não funcionam para negociação | Elite Trader.


Um Sistema Automatizado de Rede Neural Artificial para Terra A capacidade do nosso módulo automatizado de rede neural do sistema ANN,


Neural Trader Neural Network Programming Library | Módulo.


24.10.2017 & # 0183; & # 32; Avanços em Sistemas Fuzzy Arquitetura de Rede Neural Usando a Computação Evolutiva geração de rede neural automática usando.


Padrão Evolutivo Padrão Baseado em rede Neural Sensível.


07.08.2006 & # 0183; & # 32; No que diz respeito à negociação, as redes neurais são um uso de uma rede neural, um preço de algumas barras à frente e baseando seu sistema comercial sobre isso.


Modelos de Rede Neural Sistemas de Negociação, Artificiais.


Rede Neural FOREX Trading por nosso software de negociação FOREX. Usando redes neurais para executar o FOREX Technical From testing para o sistema de negociação Forex real FOREX.


Redes Neurais Automatizadas Redes Neurais - ai4trade.


Software de negociação para construção de estoque, futuros, indexação e sistemas de negociação forex usando indicadores de análise técnica e redes neurais.


SISTEMAS DE NEGOCIAÇÃO USANDO REDES NEURAS PARA - VantagePoint.


Olhe para este vídeo do meu amigo, Dustin Pass. Ele tomou algo muito sofisticado: o software "rede neural", e transformou-o diretamente em.


Redes Neurais: Previsão de Lucros - Investopedia.


SISTEMAS DE NEGOCIAÇÃO UTILIZANDO REDES NEURAS PARA PREVISÃO DE MOVIMENTO DE PREÇOS Por Lou Mendelsohn Com esta oferta, STOCKS & amp; O colaborador de COMMODITIES Lou Mendelsohn conclui o dele.


Algoritmo Genético de Rede Neural em Sistemas de Negociação FOREX.


Estratégias de Forex Algorítmicas e Mecânicas | OneStepRemoved Uma rede neural para um sistema de negociação pode redes neurais e Forex Trading. Redes neurais.


Capítulo 104 Algoritmo automatizado de negociação de ações usando Neural.


10 equívocos comuns sobre Redes Neurais, dado um sistema de comércio de rede neural que gerou a geração de sinal comercial, totalmente automatizado.


QuantShare - Software de negociação para ações, Forex e Futuros.


15.11.2017 & # 0183; & # 32; Saiba como as caixas de ferramentas MATLAB e add-on ajudam você a desenvolver estratégias de negociação automatizadas, Desenvolva sistemas de negociação automatizados com a Neural Network Toolbox.


Rede Neural FOREX Trading por nosso FOREX - Snowcron.


Algoritmo Genético e Software de Rede Neural para Negociação, Crie sistemas de negociação em MINUTOS, envie negociações para sua corretora com negociação AUTOMATIZADA. Aprender.


Negociação algorítmica: a negociação algorítmica realmente funciona?


AlgorithmicTrading é um desenvolvedor de sistemas de negociação de terceiros especializado em sistemas de negociação automatizada, estratégias de negociação algorítmica e negociação quantitativa.


10 Equívocos sobre Redes Neurais - Turing Finance.


Siqueira, I. (1999). Sistema automatizado de estimativa de custo usando redes neurais. Project Management Journal, 30 (1), 11-18.


Build Stock, Futures & amp; Sistemas de negociação Forex sem codificação.


Redes Neurais para Ensaios Automáticos de Avaliação de Ensaios Automáticos com sistema de classificação de ensaio automatizado para resolver este 2. Queremos ver o quão bem as redes neurais realizam comparadas.


Rede Neural Automated Trading systemNeural Networks.


Melhorando os Sistemas de Negociação Usando o RSI Indicador Financeiro e Redes Neurais Alejandro Rodríguez-González1, Fernando Guldrís-Iglesias1.


Software de Rede Neural Avançado para Previsão Financeira.


A Melhor Solução de Rede Neural Artificial de 2017 aumenta a precisão da previsão com poderoso software de rede neural. Graças a um único sistema de balanceamento de carga da CPU,


Neural Network Stock Trading Systems Donn S. Fishbein, MD.


04.09.2018 & # 0183; & # 32; Técnicas modernas como redes neuronais artificiais ANN são as mais utilizadas para o comércio de alta freqüência por vários motivos. Primeiro, imitam a inteligência humana.


Sistema de negociação automatizado - Wikipedia.


Rede neural de Metatrader - Opções comerciais diárias on-line - O software automatizado de negociação forex revisa a Rede Neural Metatrader. rede neural.


Negociação automatizada com rede neuronal de algoritmo genético.


05.10.2018 & # 0183; & # 32; anos recentes testemunharam o avanço dos sistemas automatizados de negociação algorítmica como soluções institucionais sob a forma de autobots, caixa preta ou.


Redes neurais para negociação algorítmica. Previsão de séries temporais corretas + backtesting.


Olá a todos! Há algum tempo eu publiquei um pequeno tutorial sobre a previsão de séries temporárias financeiras que era interessante, mas em alguns momentos errado. Passei algum tempo trabalhando com diferentes séries temporais de natureza diferente (aplicando NNs principalmente) na HPA, que se concentra particularmente na análise financeira e, nesta publicação, quero descrever uma maneira mais correta de trabalhar com dados financeiros. Comparando com a publicação anterior, eu quero mostrar uma maneira diferente de normalizar os dados e discutir mais questões de superposição (o que definitivamente aparece ao trabalhar com dados que têm natureza estocástica). Não vamos comparar diferentes arquiteturas (CNN, LSTM), você pode verificá-las na publicação anterior. Mas, mesmo trabalhando apenas com redes simples de feed-forward, veremos coisas importantes. Se você quiser saltar diretamente para o código - confira o IPython Notebook. Para leitores russos, é uma tradução da minha postagem aqui e você pode verificar o webinar em backtesting aqui.


Preparação de dados.


Vamos tirar séries históricas dos preços das ações da Apple a partir de 2005 até hoje. Você pode facilmente baixá-los do Yahoo Finance como arquivo. csv. Neste arquivo, os dados estão em ordem "invertida" - de 2017 até 2005, então precisamos reverter primeiro e dar uma olhada:


Como discutimos na publicação anterior, podemos tratar o problema da previsão de séries temporais financeiras de duas maneiras diferentes (vamos omitir a previsão de volatilidade, detecção de anomalias e outras coisas interessantes por enquanto):


Consideraremos o nosso problema como 1) problema de regressão (tentando prever exatamente fechar o preço ou retornar no dia seguinte) 2) problema de classificação binária (o preço aumentará [1; 0] ou abaixo [0; 1]). Primeiro vamos preparar nossos dados para treinamento. Queremos prever o valor de t + 1 com base em informações de N dias anteriores. Por exemplo, tendo preços próximos dos últimos 30 dias no mercado, queremos prever, que preço será amanhã, no 31º dia. Utilizamos as primeiras 90% das séries temporais como conjunto de treinamento (considere-a como dados históricos) e 10% como conjunto de testes para avaliação do modelo.


O principal problema das séries temporais financeiras - não são estacionárias, o que significa que suas propriedades estatísticas (média, variância, valores máximos e mínimos) mudam ao longo do tempo e podemos verificá-la com o teste Dickey-Fuller aumentado. E por isso, não podemos usar métodos clássicos de normalização de dados, como a normalização Min-Max ou Z-score.


No nosso caso, vamos enganar um pouco pelo problema de classificação. Nós não precisamos prever algum valor exato, então o valor esperado e a variação do futuro não são muito interessantes para nós - precisamos apenas prever o movimento para cima ou para baixo. É por isso que arriscaremos e normalizaremos nossas janelas de 30 dias somente por meio de sua média e variância (normalização de z-score), supondo que apenas durante a janela de tempo único não mudem muito e não toquem informações do futuro:


Para o problema de regressão, já não podemos enganar assim, então usaremos retornos (porcentagem de quanto o preço mudou comparando com ontem) com pandas e parece:


Como podemos ver, esses dados já estão normalizados e mesclam de -0,5 a 0,5.


Arquitetura da rede neural.


Como eu disse antes, trabalharemos apenas com MLPs neste artigo para mostrar como é fácil superar redes neurais sobre dados financeiros (e, na verdade, o que aconteceu na publicação anterior) e como preveni-lo. Expandir essas idéias sobre CNNs ou RNNs será relativamente fácil, mas é muito mais importante entender o conceito. Como antes, usamos a Keras como estrutura principal para a prototipagem de redes neurais.


Nossa primeira rede ficará assim:


Posso sugerir sempre usar a normalização do lote após cada camada afim ou convolucional e LeKy ReLU como função de ativação básica, só porque já se tornou "padrão industrial" - eles ajudam a treinar redes muito mais rápido. Outra coisa legal é reduzir a taxa de aprendizado durante o treinamento, Keras faz isso com ReduceLROnPlateau:


É assim que iniciamos o treinamento:


E é assim que vamos visualizar os resultados (vamos julgar os gráficos de perda e precisão)


Momento importante: na última publicação, treinamos nossas redes apenas por 10 épocas - é completamente errado. Mesmo podemos ver 55% de precisão, não significa realmente que possamos prever o futuro melhor do que o aleatório. Muito provavelmente, em nosso conjunto de dados, temos apenas 55% do tempo com um comportamento (up) e 45% com outro (baixo). E nossa rede só aprende essa distribuição de dados de treinamento. Então, é melhor aprendê-los por 20-50-100 épocas e se é demais para usar a parada antecipada.


Classificação.


Os resultados não são bons, nossa perda de teste não muda, podemos ver uma superação clara, vamos fazer uma rede mais profunda e experimentá-la:


Aqui estão os resultados:


Aqui vemos mais ou menos o mesmo, pior ainda ... É hora de adicionar alguma regularização ao modelo, começando pela adição da norma L2 na soma dos pesos:


Funciona melhor, mas ainda não é bom o suficiente (mesmo a perda está diminuindo, mas a precisão é ruim). Está acontecendo com muita frequência ao trabalhar com dados financeiros - é explicado muito bem aqui.


A próxima coisa que eu quero fazer parece muito estranha, mas vamos regularizar a rede já regularizada, aumentando o abandono do hardcore com taxa de 0,5 (é ignorar aleatoriamente alguns pesos, enquanto a pós-propagação para evitar coadaptação de neurônios e, portanto, superar)


Como podemos ver, as parcelas parecem mais ou menos adequadas e podemos relatar cerca de 58% da precisão, o que é um pouco melhor do que a adivinhação aleatória.


Experimente apenas por diversão para aprender a rede para prever o movimento não no dia seguinte, mas em cinco dias (o preço é maior ou menor em 5 dias em relação a hoje). Isso funciona melhor? Se funcionar melhor - por quê?


Regressão.


Para regressão, usaremos dados de retorno, arquitetura de rede neural anterior bem-sucedida (mas sem desistências) e verifique como a regressão funciona:


E aqui está o código para traçar previsões visualmente:


Funciona simplesmente ruim, mesmo não vale a pena comentá-lo. Vou contar algumas dicas que podem ajudar com um problema de regressão na parte conclusiva.


Backtesting.


Vamos lembrar por que estamos mexendo com todas essas séries temporais em geral? Queremos construir um sistema de negociação, o que significa que ele tem que fazer alguns negócios - comprar, vender ações e, espero, crescer seu portfólio.


Há muitas boas soluções para testar suas estratégias (como a Quantopian), mas eu decidi aprender como elas foram construídas de dentro e comprei o seguinte livro com detalhes de implementação (não uma colocação de produto ahahah):


A estratégia que testei é extremamente simples: se a nossa rede diz que o preço aumentará, nós compramos o estoque e o venderemos somente depois que a rede diz que o preço irá cair e aguardará o próximo sinal de compra. A lógica parece:


Aqui estão os resultados da rede de classificação de treinamento em dados de 2018 a 2018 e testes de 2018 a maio de 2017:


Blue plot mostra crescimento de valor de carteira (wow, 3% em 1,5 anos), black shows "atividade" e red one - drawdowns (períodos de perda de dinheiro).


Discussão.


No primeiro vislumbre, os resultados são ruins. Regressão horrível e classificação não realmente surpreendente (58% de precisão) estão nos pedindo para deixar essa ideia. E depois de ver essa "incrível" renda de 3% (seria mais fácil comprar ações da Apple e manter, eles cresceram em 20% nesse momento) você talvez queira fechar o laptop e fazer algo que não envolva financiamento ou aprendizado de máquina . Mas há muitas maneiras de melhorar nossos resultados (e o que as pessoas fazem em fundos):


Use dados de alta freqüência (horários e minutos) - os algoritmos de aprendizado de máquina precisam de mais dados e prevêem melhor em curta distância. O otimização do hiperparâmetro inteligente, incluindo não apenas otimização da rede neural e os parâmetros de treinamento, mas também as janelas de tempo históricas que você treina Use melhor arquiteturas de redes neurais, como CNNs ou RNNs. Use não só o preço de fechamento ou os retornos, mas todas as tuplas OHLCV para todos os dias; se for possível - colete informações sobre os compamies mais correlacionados, o status financeiro do setor, variáveis ​​econômicas, etc. É impossível construir um bom modelo de previsão confiando nos dados simples que usamos Use funções de perda mais sofisticadas, talvez assimétricas. Por exemplo, a MSE que usamos para a regressão é invariante para o sinal, o que é crucial para a nossa tarefa.


Conclusão.


A previsão de dados financeiros é extremamente complicada. É fácil superar, não sabemos o alcance histórico correto para treinar e é difícil obter todos os dados necessários. Mas, como podemos ver, funciona, e até mesmo pode dar alguns lucros. Este artigo pode ser um bom ponto de partida e pipeline para pesquisa e descoberta adicionais.


Nas próximas postagens, planejo mostrar o processo automatizado de busca de hiperparâmetros, adicionar mais dados (indicadores OHLCV e financeiros completos), aplicar o reforço aprendendo a aprender a estratégia e verificar se o agente de reforço confiará nas nossas previsões. Fique ligado!


Ao bater palmas mais ou menos, você pode nos indicar quais são as histórias que realmente se destacam.


Alex Honchar.


máquinas de ensino e raphamento.


Mundo de aprendizagem de máquinas.


O melhor sobre Aprendizado de Máquinas, Visão de Computador, Aprendizagem Profunda, Processamento de linguagem natural e outros.


Redes neurais para negociação algorítmica. Previsão de séries temporais simples.


ACTUALIZAÇÃO IMPORTANTE:


Esta é a primeira parte dos meus experimentos em aplicação de aprendizado profundo para financiar, em particular para negociação algorítmica.


Eu quero implementar o sistema de negociação a partir do zero com base apenas em abordagens de aprendizado profundo, então, para qualquer problema que temos aqui (previsão de preços, estratégia de negociação, gerenciamento de riscos), usaremos diferentes variações de redes neuronais artificiais (RNAs) e veremos o quanto elas podem lide com isso.


Agora eu planejo trabalhar nas próximas seções:


Previsão de séries temporais com dados brutos Previsão de séries temporais com recursos personalizados Otimização de hiperparâmetros Implementação de estratégia de negociação, backtesting e gerenciamento de riscos Estratégias de negociação mais sofisticadas, reforço de aprendizagem Indo ao vivo, corretores API, ganhando (l̶o̶s̶i̶n̶g̶) dinheiro.


Eu recomendo que você verifique o código e o IPython Notebook neste repositório.


Nesta primeira parte, quero mostrar como MLPs, CNNs e RNNs podem ser usados ​​para a previsão de séries temporais financeiras. Nesta parte, não vamos usar nenhuma engenharia de recursos. Vamos considerar o conjunto de dados históricos dos movimentos dos preços do índice S & P 500. Temos informações de 1950 a 2018 sobre preços abertos, fechados, altos e baixos para todos os dias do ano e volume de negócios. Primeiro, tentaremos apenas prever fechar o preço no final do próximo dia, em segundo lugar, tentaremos prever o retorno (preço fechado - preço aberto). Baixe o conjunto de dados do Yahoo Finance ou deste repositório.


Definição do problema.


Consideraremos o nosso problema como 1) problema de regressão (tentando prever exatamente fechar o preço ou retornar no dia seguinte) 2) problema de classificação binária (o preço aumentará [1; 0] ou abaixo [0; 1]).


Para treinar NNs, usaremos framework Keras.


Primeiro vamos preparar nossos dados para treinamento. Queremos prever o valor de t + 1 com base em informações de N dias anteriores. Por exemplo, tendo preços próximos dos últimos 30 dias no mercado, queremos prever, que preço será amanhã, no 31º dia.


Utilizamos as primeiras 90% das séries temporais como conjunto de treinamento (considere-a como dados históricos) e 10% como conjunto de testes para avaliação do modelo.


Aqui é exemplo de carregamento, dividindo em amostras de treinamento e pré-processamento de dados de entrada brutos:


Problema de regressão. MLP.


Será apenas um perceptron de 2 camadas escondidas. O número de neurônios escondidos é escolhido de forma empírica, vamos trabalhar na otimização de hiperparâmetros nas próximas seções. Entre duas camadas ocultas, adicionamos uma camada de Saída para evitar a sobreposição.


O importante é Dense (1), Activation ('linear') e 'mse' na seção de compilação. Queremos um produto que possa estar em qualquer intervalo (prevemos valor real) e nossa função de perda é definida como erro quadrático médio.


Vamos ver o que acontece se apenas passarmos pedaços de preços próximos de 20 dias e prever o preço no 21º dia. Final MSE = 46.3635263557, mas não é uma informação muito representativa. Abaixo está um gráfico de previsões para os primeiros 150 pontos do conjunto de dados de teste. A linha preta é dados reais, um azul - previsto. Podemos ver claramente que nosso algoritmo não é nem mesmo de perto, mas pode aprender a tendência.


Vamos dimensionar nossos dados usando o método de sklearn pré-processamento. Escala () para ter nossa série zero de tempo e variância unitária e treinar o mesmo MLP. Agora temos MSE = 0.0040424330518 (mas está em dados dimensionados). No gráfico abaixo, você pode ver as séries temporais reais escaladas (preto) e a nossa previsão (azul) para ela:


Para usar este modelo no mundo real, devemos retornar às séries temporais não escaladas. Podemos fazê-lo, multiplicando ou preditivo por desvio padrão de séries temporais que usamos para fazer predição (20 etapas de tempo não escalonadas) e adicione seu valor médio:


MSE neste caso é igual a 937.963649937. Aqui está o enredo de previsões restauradas (vermelho) e dados reais (verde):


Não está mal, não é? Mas vamos tentar algoritmos mais sofisticados para esse problema!


Problema de regressão. CNN.


Eu não vou mergulhar na teoria das redes neurais convolutivas, você pode verificar esses recursos incríveis:


Vamos definir a rede neural convolucional de 2 camadas (combinação de camadas de convolução e max-pooling) com uma camada totalmente conectada e a mesma saída que anteriormente:


Vamos verificar resultados. MSEs para dados escalados e restaurados são: 0.227074542433; 935.520550172. As parcelas estão abaixo:


Mesmo olhando para MSE em dados escalados, esta rede aprendeu muito pior. Provavelmente, uma arquitetura mais profunda precisa de mais dados para o treinamento, ou simplesmente é superada devido ao número muito alto de filtros ou camadas. Vamos considerar esta questão mais tarde.


Problema de regressão. RNN.


Como arquitetura recorrente, eu quero usar duas camadas LSTM empilhadas (leia mais sobre LSTM aqui).


As parcelas das previsões estão abaixo, MSEs = 0.0246238639582; 939.948636707.


A previsão da RNN se parece mais com o modelo médio móvel, não pode aprender e prever todas as flutuações.


So, it’s a bit unexpectable result, but we can see, that MLPs work better for this time series forecasting. Let’s check out what will happen if we swith from regression to classification problem. Now we will use not close prices, but daily return (close price-open price) and we want to predict if close price is higher or lower than open price based on last 20 days returns.


Classification problem. MLP.


Code is changed just a bit — we change our last Dense layer to have output [0; 1] or [1; 0] and add softmax output to expect probabilistic output.


To load binary outputs, change in the code following line:


Also we change loss function to binary cross-entopy and add accuracy metrics.


Oh, it’s not better than random guessing (50% accuracy), let’s try something better. Check out the results below.


Classification problem. CNN.


Classification problem. RNN.


Conclusões.


We can see, that treating financial time series prediction as regression problem is better approach, it can learn the trend and prices close to the actual.


What was surprising for me, that MLPs are treating sequence data better as CNNs or RNNs which are supposed to work better with time series. I explain it with pretty small dataset (


16k time stamps) and dummy hyperparameters choice.


You can reproduce results and get better using code from repository.


I think we can get better results both in regression and classification using different features (not only scaled time series) like some technical indicators, volume of sales. Also we can try more frequent data, let’s say minute-by-minute ticks to have more training data. All these things I’m going to do later, so stay tuned :)


Ao bater palmas mais ou menos, você pode nos indicar quais são as histórias que realmente se destacam.


Alex Honchar.


teaching machines and rapping.


Machine Learning World.


The best about Machine Learning, Computer Vision, Deep Learning, Natural language processing and other.


SnowCron.


FREE E. Mail Classes.


Usando o Algoritmo Genético para criar Estratégia de Negociação FOREX lucrativa. Genetic Algorithm in Cortex Neural Networks Software Feedforward Backpropagation Neural Network Application for genetic computations based Forex trading.


This example uses concepts and ideas of the previous article, so please read Neural Network Genetic Algorithm in FOREX Trading Systems first, though it is not mandatory.


About this text.


First of all, please read the disclaimer. This is an example of using Cortex Neural Networks Software genetic algorithm functionality, not an example of how to do profitable trading. I am not your guru, neither should I be responsible for your losses.


Cortex Neural Networks Software has neural networks in it, and FFBP we discussed before is only one way of choosing a forex trading strategies . It is a good technique, powerful and when applied properly, very promicing. However, it has a problem - to teach tne Neural Network , we need to know the "desired output".


It is rather easy to do when we do function approximation, we just take the "real" value of a function, because we know what it should be.


When we do neural network forecasting , we use the technique (described in previous articles) of teaching the Neural Network on the history, again, if we predict, say, an exchange rate, we know (during the training) what the correct prediction is.


However, when we are building a trading system, we have no idea what the correct trading decision is, even if we know the exchange rate! As the matter of fact, we have many forex trading strategies we can use at any point of time, and we need to find a good one - how? O que devemos alimentar como o resultado desejado de nossa Rede Neural?


If you followed our previous article, you know, that we have cheated to deal with this problem. Ensinamos a Rede Neural a fazer uma previsão de taxa de câmbio (ou taxa de câmbio), e então usamos essa previsão para fazer negociação. Then, outside the Neural Network part of the program, we made a decision on which Neural Network is the best one.


Genetic algorithms can deal with this problem directly, they CAN solve the problem stated as "find the best trading signals".


In this article we are going to use Cortex Neural Networks Software to create such a program.


Using Genetic Algorithm.


Genetic Algorithms are very well developed, and very diverse. If you want to learn all about them, I suggest you use Wikipedia, as this article is only about what Cortex Neural Networks Software can do.


Having Cortex Neural Networks Software, we can create an Neural Network that takes some input, say, values of an indicator, and produces some output, say, trading signals (buy, sell, hold. ) and stop loss / take profit levels for positions to be opened.


Of course, if we seed this Neural Network 's weights at random, trading results will be terrible. However, let's say we created a dozen of such NNs. Then we can test performance of each of them, and choose the best one, the winner.


This was the "first generation" of NNs. To continue to the second generation, we need to allow our winner to "procreate", but to avoid getting identical copies, let's add some random noice to it's descentants' weights.


In the second generation, we have our first-generation winner and it's imperfect (mutated) copies. Let's do testing again. We will have another winner, which is BETTER then any other Neural Network in the generation.


E assim por diante. We simply allow winners to breed, and eliminate losers, just like in real life evolution, and we will get our best-trading Neural Network , without any prior knowlege on what the trading system ( genetic algorithm ) should be like.


Algoritmo Genético da Rede Neural: Exemplo 0.


This is the first genetic algorithm example , and a very simple one. We are going to walk through it step by step, to learn all tricks that following examples will use.


The code has inline comments, so let's just focus on key moments.


First, we have created a neural network . It is using random weights, and was not yet teached.


Then, in cycle, we make 14 copies of it, using MUTATION_NN fumction. This function makes a copy of a source Neural Network , adding random values from 0 to (in our case) 0.1 to all weights.


We keep handles to resulting 15 NNs in an array, we can do it, as handle is just an integer number.


The reason we use 15 NNs has nothing to do with trading: Cortex Neural Networks Software can plot up to 15 lines on a chart simultaneously.


We can use different approaches to the testing. First, we can use the learning set, all of it at once. Second, we can test on, say, 12000 resords (out of 100000), and walk through the learning set, from beginning to the end. That will make learnigs different, as we will look for Neural Network 's that are profitable on any given part of data, not just on the entire set. The second approach can give us problems, if data change, from the beginning to the end. Em seguida, a rede irá evoluir, obtendo capacidade de trocar no final do conjunto de dados e perdendo a capacidade de trocar no seu início.


To solve that problem, we are going to take random 12000 records fragments from data, and feed it to the Neural Network .


Below we add one child for each network, with slightly different weights. Note, that 0.1 for mutation tange is not the only choice, as the matter of fact, even this parameter can be optimized using genetic algorithm .


Os NNs recém-criados são adicionados após 15 existentes. This way we have 30 NNs in an array, 15 old and 15 new. Then we are going to do the next cycle of testing, and to kill losers, from both generations.


To do testing, we apply Neural Network to our data, to produce outputs, and then call Test function, that uses these outputs to simulate trading. Results of trading are used to deside, which NNs are best.


We use an interval of nLearn records, from nStart to nStart + nLearn, where nStart is a random point within learning set.


The code below is a trick. The reason we use it is to illustrate the fact, that genetic algorithm can create genetic algorithm , but it will not necessarily will be the best one, and also, to suggest, that we can improve result, if we imply some limitations to the learning process.


It is possible, that our trading system works very well on long trades, and very poor on short, or vice versa. If, say, long trades are VERY good, this genetic algorithm may win, even with large losses on short trades.


To avoid it, we assign more weight to long trades in odd and to short trades in even cycles. This is just an example, there is no guarantee, that it will improve something. More about it below, in discussion about corrections. Technically, you don't have to do it, or can make it differently.


Add profit to a sorted array. It returns an insertion position, then we use this position to add Neural Network handle, learning and testing profits to non-sorted arrays. Now we have data for current Neural Network at the same array index as its profit.


The idea is to arrive to array of NNs, sorted by profitability. As array is sortes by profit, to remove 1/2 of networks, that are less profitable, we just need to remove NNs 0 to 14.


As decisões de negociação são baseadas no valor do sinal da Rede Neural, desde este ponto de vista o programa é idêntico aos exemplos do artigo anterior.


FOREX Estratégia de Negociação: Discussing example 0.


First of all, let's take a look at charts. O primeiro gráfico de lucro durante a primeira iteração não é bom, como seria de esperar, a Rede Neural perde dinheiro (imagem evolution_00_gen_0.png copiada após a primeira iteração da pasta "imagens"):


The image for profit on cycle 15 is better, sometimes, genetic algorithm can learn really fast:


However, notice the saturation on a profit curve.


It is interesting also to look at the way individual profits change, keeping in mind, that curve number, say, 3 is not always for the same Neural Network , as they are being born and terminated all the time:


Also note, that out little forex automated trading system performs poor on short trades, and much better on longs, which may or may not be related to the fact, that dollar was falling compared to euro during that period. It also may have something to do with parameters of our indicator (maybe, we need different period for shorts) or the choice of indicators.


Here is the history after 92 and 248 cycles:


Para nossa surpresa, o algoritmo genético falhou completamente. Let's try to figure out why, and how to help the situation.


First of all, isn't each generation supposed to be better than the previuos one? A resposta é não, pelo menos não dentro do modelo que usamos. If we took ENTIRE learning set at once, and used it repeatedly to teach our NNs, then yes, they will improve on each generation. But instead, we took random fragments (12000 records in time), and used them.


Two questions: why the system failed on random fragments of learning set, and why haven't we used entire learning set? Bem. To answer the second question, I did. NNs apresentaram um grande desempenho - no aprendizado definido. And they failed on testing set, for same reason it failes when we used FFPB learning. To put it differently, our NNs got overspecialized, they learned how to survive in the environment they are used to, but not outside it. This happens a lot in nature.


The approach we took instead was intended to compensate for that, by forcing NNs to perform good on any random fragment of the dataset, so that hopefully, they could also perform on an unfamiliar testing set. Em vez disso, eles falharam tanto no teste quanto no conjunto de aprendizado.


Imagine animals, living in a desert. A lot of sun, no snow at all. This is a metafor for rizing market, as for our NNs data play the role of environment. Animals learned to live in a desert.


Imagine animals, that live in a cold climate. Snow and no sun at all. Well, they adjusted.


However, in our experiment, we randomly placed our NNs in a desert, in snow, in the water, on the trees. by presenting them with different fragments of data (randomly rising, falling, flat. ). Animals died.


Or, to put it differently, we selected the best Neural Network for random data set 1, which, say, was for rising market. Then we presented, to the winners and their children, a falling market's data. NNs performed poorly, we took best of poor performers, perhaps, one of the mutant children, that lost ability to trade on rising market, but got some ability to deal with falling one.


Then we turned the table again, and again, we got best performer - but best among poor performers. Nós simplesmente não damos a nossos NNs chances de se tornarem universais.


There are techniques allowing genetic algorithm to learn new information without loosing performance on old information (after all, animals can live in summer and in winter, right? So evolution IS able to handle repeating changes). We may discuss these techniques later, though this article is more about using Cortex Neural Networks Software, than about building a successfull forex automated trading system .


Neural Network Genetic Algorithm: Example 1.


Now it is time to talk about corrections. A simple genetic algorithm we created during the previous step has two major flaws. First, it failed to trade with profit. It is ok, we can try to use partially trained system (it was profitable at the beginning). The second flaw is more serious: we have no control over things, that this system does. For example, it may learn to be profitable, but with huge drawdowns.


It is a well known fact, that in real life, evolution can optimize more than one parameter simultaneously. For example, we can get an animal, that can run fast AND be resistant to cold. Why not to try doing the same in our forex automated trading system ?


É quando usamos as correções, que são apenas o conjunto de punições adicionais. Say, our system trades with drawdown 0.5, while we want to confirm it to 0 - 0.3 interval. To "tell" the system that it made a mistake, we decrease its profit (one used to determine, which genetic algorithm won) to the degree, that is proportional to the size of DD. Then, the evolution algorithm takes care of the rest.


There are few more factors, that we want to take into consideration: we may want to have more or less equal number of buy and sell operations, we want to have more of profitable operations, then of failures, we may want the profit chart to be linear and so on.


In evolution_01.tsc we implement a simple set of corrections. First of all, we use some large number for an initial correction value. We multiply it to a small (usually, between 0 and 1) values, depending on the "punishment" we want to apply. Então, multiplicamos nosso lucro por esta correção. As the result, profit is corrected, to reflect how much the genetic algorithm corresponds to our other criteria. Then we use the result to find a winner Neural Network .


FOREX Trading Strategy: Discussing example 1.


Example 1 works much better, than example 0. During first 100 cycles, it learned a lot, and profit charts look reassuring. However, as in example 0, long trades are much more profitable, which most likely means that there is a problem in our approach. Nevertheless, the system found a balance between couple of contradictory initial conditions:


There is some positive dynamics both in learning set and, more important, in testing set.


As for further learning, at cycle 278 we can see, that our system got overtrained. Isso significa que ainda temos progresso no aprendizado definido:


But testing set shows weakness:


Este é um problema comum com NNs: quando ensinamos isso no aprendizado definido, ele aprende a lidar com isso e, às vezes, ele aprende muito bem - até o grau, quando perde o desempenho no conjunto de testes.


To deal with that problem, a "traditional" solution is used: we keep looking for the Neural Network , that performs best on testing set, and save it, overwriting previous best one, every time new peak is reached. This is the same approach, we used in FFBP training, except, this time we have to do it ourselves (adding code, that looks for a best Neural Network on a testing set, and calling SAVE_NN, or exporting weights of Neural Network to a file). This way, when you stop your training, you'll have the best performer ON TESTING SET saved and waiting for you.


Note also, that it is not the max. profit you are after, but optimal performance, so consider using corrections, when looking for a best performer on a testing set.


Genetic Algorithm for FOREX Technical Analysis: Where now?


After you got your winner Neural Network , you can follow the steps, described in previous article, to export weights of that Neural Network , and then to use them in your real time trading platform, like Meta Trader, Trade Station and so on.


Alternatively, you can focus on other ways of optimizing the Neural Network , unlike with FFBP algorithm, here you can get avay from using learning and testing sets, and move sequential learning.

No comments:

Post a Comment