Estratégias de negociação de redes neurais


Forex Mecânico
Negociação no mercado de câmbio usando estratégias de negociação mecânicas.
Redes Neurais em Negociação: Construindo um poderoso comércio & # 8220; cérebro & # 8221; com vários NN.
Vamos começar a semana com boas notícias: o). Nos últimos dois anos, o desenvolvimento de sistemas de aprendizado de máquina tem sido uma grande prioridade para mim. Essas técnicas nos oferecem o sonho de implementações comerciais permanentemente auto-adaptáveis, nas quais as decisões de negociação são constantemente ajustadas para corresponder aos dados mais recentes. Embora esteja ciente de que mesmo este nível de adaptabilidade não garante qualquer rentabilidade & # 8211; como os modelos subjacentes podem se tornar inúteis sob algumas novas condições & # 8211; nos fornece um grau maior de confiança em relação à nossa capacidade de prever um determinado instrumento de mercado daqui para frente. No post de hoje, vou mostrar o meu mais recente desenvolvimento no mundo das redes neurais, onde finalmente consegui o que considero excelentes resultados de testes históricos baseados em técnicas de aprendizado de máquina. Através deste artigo eu vou discutir os diferentes métodos que foram introduzidos neste novo sistema e como a chave para o seu sucesso veio da junção de alguns dos já bem sucedidos # 8211; ainda não excelente & # 8211; implementações de negociação.
Antes de tudo, gostaria de descrever a maneira como desenvolvo estratégias de redes neurais para que você possa entender melhor meus sistemas e desenvolvimentos mais recentes. Meus sistemas de negociação de rede neural são projetados para que eles sempre reciclem pesos recém-aleatorizados em cada nova barra diária usando as barras N passadas (usualmente dados para cerca de 200-500 dias são usados) e então tomar uma decisão comercial somente para a próxima barra diária . O processo de re-treinamento é feito em cada barra, a fim de evitar qualquer ajuste de curva a um determinado tempo de partida ou frequência de treinamento, e os pesos são completamente redefinidos para evitar qualquer dependência do comportamento de treinamento anterior. As redes neurais que eu tenho programado aproveitam a nossa estrutura de programação F4 e a biblioteca FANN (Fast Artificial Neural Network), que é o núcleo da implementação de aprendizado de máquina. A topologia da rede não é otimizada contra a lucratividade, mas simplesmente designada como a quantidade mínima de neurônios necessária para alcançar a convergência dentro de um número razoável de épocas de treinamento. Algumas variáveis, como o número de entradas de treinamento e exemplos usados, são deixadas como parâmetros do modelo. Agora que você entende melhor como eu abordo as redes neurais, podemos ir mais fundo no meu trabalho no NN.
Tenho que confessar que minha busca por melhorar as estratégias de negociação de redes neurais foi preenchida com frustração. Levei muito tempo para desenvolver meu primeiro modelo de sucesso (o sistema de negociação Sunqu & # 8212; que está realmente em lucro depois de mais de um ano de negociação ao vivo), mas após este desenvolvimento inicial eu não fui capaz de melhorá-lo muito mais (além de algumas pequenas melhorias). Depois disso, decidi deixar este modelo sozinho & # 8211; o que é realmente complicado na natureza & # 8211; e tentar desenvolver um modelo mais simples que, esperamos, seja mais fácil de melhorar. Foi quando desenvolvi o sistema Paqarin, que usa um conjunto mais simples de entradas e saídas para atingir níveis semelhantes de rentabilidade histórica no EUR / USD. Contudo & # 8211; para continuar minha frustração & # 8211; O Paqarin não era muito fácil de melhorar também. Eu fiz algum progresso na melhoria desta estratégia de negociação durante as últimas semanas, mas eu quero deixar essa discussão para um post futuro (como ele lida com insumos).
Minha última tentativa de superar os problemas acima foi a estratégia de negociação Tapuy, um sistema que foi inspirado em um artigo sobre o uso do NN em imagens. Usando as bibliotecas ChartDirector, DeVil e FANN, pude implementar um mecanismo de criação e processamento de imagens que usava gráficos diários do EUR / USD (uma redução drástica deles) para fazer previsões sobre o próximo dia de negociação. Esse sistema é muito interessante porque mostra que os pixels simples dentro desses gráficos contêm informações suficientes para tomar decisões que tenham uma vantagem histórica significativa. O Tapuy também é interessante no sentido de que ele processa gráficos de negociação, a mesma entrada que os operadores manuais usam para lidar com o mercado. No entanto, este sistema não era uma panacéia e melhorar esta estratégia também foi extremamente difícil. Tapuy também é difícil de fazer o back-test (demora muito tempo devido ao processo de criação e leitura da imagem) e, portanto, a quantidade de experimentos que poderiam ser feitos era reduzida.
Depois de criar estes três sistemas, minhas novas criações do NN foram nulas. Eu não poderia melhorá-los substancialmente e não consegui encontrar uma nova estratégia para criar um NN, esta foi a principal razão pela qual eu comecei a experimentar novas técnicas de aprendizado de máquina (como classificadores lineares, keltners, máquinas de vetores de suporte, etc. ). No entanto, durante a semana passada, tive uma espécie de epifania quando pensava em maneiras de limitar a exposição desses sistemas ao mercado, fazendo com que eles negociassem menos e percebesse que a solução para meus problemas estava na minha frente. Tempo. A solução para melhorar o desempenho de três classificadores & # 8211; todos eles mostrando bordas históricas de longo prazo & # 8211; é simples & # 8230; Basta colocá-los juntos para tomar decisões comerciais! : o)
Certamente, minha experiência com outras técnicas de aprendizado de máquina me disse que colocar classificadores juntos para tomar decisões comerciais geralmente melhorava o desempenho, mas eu nunca havia pensado em colocar esses sistemas juntos porque os via principalmente como estratégias de negociação separadas e não simplesmente como tomadores de decisões de aprendizado de máquina. No entanto, fazia todo o sentido colocar os três núcleos de tomada de decisão em uma única estratégia: o que agora eu gosto de chamar de 'AsirikuyBrain' # 8221; e chegar a conclusões sobre decisões de negociação a partir de uma previsão que esteja de acordo com as três técnicas. Se todos eles tiverem bordas de longo prazo, sua concordância total deverá ter mais poder de previsão do que sua concordância parcial. O resultado me surpreendeu completamente. As estratégias de negociação melhoraram muito as estatísticas umas das outras (muito mais do que se fossem negociadas juntas como sistemas dentro de um portfólio) e, além disso, diminuíam a exposição geral de mercado das estratégias por uma grande margem. O sistema só tem uma posição aberta a qualquer momento, mas precisa que todos os preditores concordem para entrar ou sair de uma posição.
A rentabilidade global é a mais alta entre todos os sistemas e o rebaixamento é o mais baixo, o que significa que o AsirikuyBrain obtém uma taxa de Retorno Anualizado Máximo que é maior do que qualquer uma das técnicas de negociação individuais utilizadas, a duração máxima do período de rebaixamento também é reduziu consideravelmente, de mais de 1000 dias para os outros sistemas NN, para menos de 750 dias. A linearidade do sistema de negociação em simulações não compostas também aumenta tremendamente (para R ^ 2 = 0,98), graças ao poder de suavização obtido do efeito de comitê (o que significa que a idéia funciona!). Como você pode ver nas imagens neste post, as curvas para os sistemas individuais são marcadamente inferiores quando comparadas com a curva de capital da estratégia AsirikuyBrain. Eu continuarei fazendo alguns testes e melhorias, então espere alguns novos posts no NN dentro dos próximos dias e semanas (incluindo alguns posts sobre insumos, precisão de predição Vs lucratividade e previsões de lucratividade Vs previsões de direcionalidade).
Se você gostaria de aprender mais sobre estratégias de rede neural e como você também pode construir constantemente sistemas NN de reciclagem usando FANN que podem ser executados em MQL4 / MQL5 / JForex ou na API Oanda REST, por favor, considere juntar-se à Asirikuy, um site repleto de recursos educacionais. vídeos, sistemas de negociação, desenvolvimento e uma abordagem sólida, honesta e transparente para o comércio automatizado em geral. Espero que tenha gostado deste artigo ! : o)
7 Responses to & # 8220; Redes Neurais em Negociação: Construindo um poderoso comércio & # 8220; cérebro & # 8221; com vários NN & # 8221;
você vai lançar este AsirikuyBrain e no futuro próximo?
Obrigado pelo seu comentário: o) Sim, será na atualização F4.3.14 do próximo fim de semana,
Conceito interessante. Eu estou calculando um CAGR = 3.5% ou perto dele. Eu acho que isso é muito baixo (SPX TR para o mesmo período é de cerca de 10%) e combinado com o longo drawdown eu acho que você ainda pode ter um longo caminho a percorrer com isso. É bom que você é persistente embora :)
E se você ajustar o tamanho da posição 2, as previsões concordam com 2/3 e o tamanho até a posição total, quando todas concordam?
Você mantém a posição aberta até que um preditor não concorde ou você apenas a feche no final do dia? Eu não sei se perdi isso.
Obrigado por postar: o)
Conceito interessante. Estou calculando um CAGR = 3,5% ou próximo a ele. Eu acho que isso é muito baixo (SPX TR para o mesmo período é de cerca de 10%) e combinado com o longo drawdown eu acho que você ainda pode ter um longo caminho a percorrer com isso. É bom que você é persistente embora :)
O CAGR não pode ser calculado a partir dessa simulação não composta como se fosse uma simulação regular, uma vez que o risco é uma quantia constante em USD (1% do saldo inicial). Ao usar a gestão de dinheiro regular (1% de risco de saldo no comércio aberto), o CAGR é na verdade perto de 10% e o AAR / MaxDD está na região 0,8-0,9 (o máximo DD é de cerca de 13,5%). O gerenciamento regular de dinheiro composto geraria gráficos de crescimento exponencial (que são difíceis de interpretar visualmente de maneira adequada), motivo pelo qual eu sempre publico simulações não compostas. No entanto, ao negociar ao vivo, você sempre usaria a administração de dinheiro regular, arriscando uma porcentagem fixa do saldo na negociação aberta. Eu também fiz algumas melhorias significativas nos últimos dias e tenho a duração do rebaixamento de Max em menos de 500 dias: o)
E se você ajustar o tamanho da posição 2, as previsões concordam com 2/3 e o tamanho até a posição total, quando todas concordam?
É uma ideia interessante! Vou tentar e ver o que recebo.
Você mantém a posição aberta até que um preditor não concorde ou você apenas a feche no final do dia? Não sei se perdi isso.
Eu tentei os dois, fechando posições em algum desacordo me deu resultados piores, eu só fecho negócios sempre que o SL é atingido ou um sinal oposto (onde todos os NNs concordam) aparece.
Obrigado novamente por comentar Bog: o)
O gerenciamento de dinheiro de composição regular geraria gráficos de crescimento exponenciais (que são difíceis de interpretar visualmente de maneira adequada), motivo pelo qual eu sempre posto simulações não compostas. No entanto, ao negociar ao vivo, você sempre usaria uma administração de dinheiro regular, arriscando uma porcentagem fixa do saldo na negociação aberta. & # 8221;
Eu sou da opinião que MM regular deve ser usado em backtests porque é um método anti-martingale adequado. É raro ver um crescimento exponencial devido a quedas. A melhor maneira de fazer backtest é acreditar na maneira como você negocia e envolve MM.
Eu sou da opinião que MM regular deve ser usado em backtests porque é um método anti-martingale adequado. É raro ver um crescimento exponencial devido a quedas. A melhor maneira de fazer backtest é acreditar na maneira como você negocia e envolve MM.
Sim, claro, eu concordo plenamente com isso, isso (com MM) é, obviamente, a maneira pela qual nós testamos os sistemas para analisar antes da negociação ao vivo. Eu só executo as simulações não-compostas no blog porque elas são mais fáceis de analisar e tirar conclusões (tendo apenas os gráficos). Uma simulação regular de MM sem as estatísticas (apenas o gráfico) é mais difícil de analisar. Da próxima vez, também postarei algumas estatísticas regulares do MM. Obrigado novamente por comentar Bob: o)
A linearidade da curva de capital é muito impressionante Daniel. Obrigado por compartilhar seu trabalho duro.

Estratégias de negociação de redes neurais
Estratégias de Stop-and-Reverse de rede neural híbrida para Forex.
por Michael R. Bryant.
Redes neurais têm sido usadas em sistemas de negociação por muitos anos com vários graus de sucesso. Sua principal atração é que sua estrutura não linear é mais capaz de capturar as complexidades do movimento de preços do que as regras comerciais padrão baseadas em indicadores. Uma das críticas tem sido que as estratégias de negociação baseadas em redes neurais tendem a ser excessivamente ajustadas e, portanto, não apresentam bom desempenho em novos dados. Uma possível solução para esse problema é combinar as redes neurais com a lógica de estratégia baseada em regras para criar um tipo híbrido de estratégia. Este artigo mostrará como isso pode ser feito usando o Adaptrade Builder.
Em particular, este artigo ilustrará o seguinte:
Combinando lógica neural e lógica baseada em regras para entradas de comércio.
Segmentando várias plataformas simultaneamente (MetaTrader 4 e TradeStation)
Desenvolvendo uma estratégia com lógica de parada e reversão assimétrica.
Usando dados forex intraday.
Uma abordagem de dados de três segmentos será usada, com o terceiro segmento usado para validar as estratégias finais. O código de estratégia resultante para o MetaTrader 4 e TradeStation será mostrado, e será demonstrado que os resultados da validação são positivos para cada plataforma.
Redes Neurais como Filtros de Entrada no Comércio.
Matematicamente, uma rede neural é uma combinação não linear de uma ou mais entradas ponderadas que gera um ou mais valores de saída. Para negociar, uma rede neural é geralmente usada de duas maneiras: (1) como uma previsão de movimento futuro de preços, ou (2) como um indicador ou filtro para negociação. Aqui, seu uso como indicador ou filtro de negociação será considerado.
Como um indicador, uma rede neural atua como uma condição adicional ou filtro que deve ser satisfeita antes que uma negociação possa ser inserida. As entradas para a rede são tipicamente outros indicadores técnicos, como momentum, stochastics, ADX, médias móveis e assim por diante, bem como preços e combinações dos precedentes. As entradas são dimensionadas e a rede neural é projetada para que a saída seja um valor entre -1 e +1. Uma abordagem é permitir uma entrada longa se a saída for maior ou igual a um valor limite, como 0,5, e uma entrada curta se a saída for menor ou igual ao negativo do limite; por exemplo, -0,5. Essa condição seria adicional a qualquer condição de entrada existente. Por exemplo, se houvesse uma condição de entrada longa, ela teria que ser verdadeira e a saída da rede neural teria que ser pelo menos igual ao valor limite para uma entrada longa.
Ao configurar uma rede neural, um comerciante seria tipicamente responsável por escolher as entradas e a topologia de rede e por "treinamento". a rede, que determina os valores ideais de pesos. Como será mostrado abaixo, o Adaptrade Builder executa essas etapas automaticamente como parte do processo de criação evolucionário no qual o software é baseado. O uso da rede neural como filtro de comércio permite que ela seja facilmente combinada com outras regras para criar uma estratégia de negociação híbrida, que combina as melhores características de abordagens tradicionais baseadas em regras com as vantagens das redes neurais. Como um exemplo simples, o Builder pode combinar uma regra de crossover de média móvel com uma rede neural de modo que uma posição longa seja tomada quando a média de movimento rápido ultrapassar a média de movimento lento e a saída da rede neural for igual ou superior ao seu limite.
Estratégias de Negociação Stop-and-Reverse.
Uma estratégia de negociação stop-and-reverse é aquela que está sempre no mercado, seja longa ou curta. Estritamente falando, & quot; stop-and-reverse & quot; significa que você reverta a negociação quando sua ordem de parada é atingida. No entanto, eu uso isso como um shorthand para qualquer estratégia de negociação que inverte de longo para curto para longo e assim por diante, para que você esteja sempre no mercado. Por esta definição, não é necessário que as ordens sejam ordens de parada. Você pode entrar e reverter usando ordens de mercado ou limite também. Também não é necessário que cada lado use a mesma lógica ou até mesmo o mesmo tipo de pedido. Por exemplo, você pode entrar com um valor longo (e sair curto) em uma ordem de parada e entrar com um valor curto (e sair longo) em uma ordem de mercado, usando regras e condições diferentes para cada entrada / saída. Este seria um exemplo de estratégia de parada e reversão assimétrica.
A principal vantagem de uma estratégia de parar e reverter é que, por estar sempre no mercado, você nunca perde grandes movimentos. Outra vantagem é a simplicidade. Quando há regras e condições separadas para entrar e sair de negociações, há mais complexidade e mais coisas que podem dar errado. Combinar entradas e saídas significa que menos decisões de tempo têm que ser tomadas, o que pode significar menos erros.
Por outro lado, pode-se argumentar que as melhores condições para sair de uma negociação raramente são as mesmas que as de entrar na direção oposta; que entrar e sair de negociações são decisões inerentemente separadas que devem, portanto, empregar regras e lógica separadas. Outra possível desvantagem de estar sempre no mercado é que a estratégia será negociada em todas as lacunas de abertura. Um grande intervalo de abertura contra a posição pode significar uma grande perda antes que a estratégia seja capaz de reverter. Estratégias que entram e saem de forma mais seletiva ou que saem até o final do dia podem minimizar o impacto da abertura de lacunas.
Como o objetivo é construir uma estratégia forex, o MetaTrader 4 (MT4) é uma escolha óbvia para a plataforma de negociação, pois o MetaTrader 4 é projetado principalmente para forex e é amplamente usado para negociar esses mercados (ver, por exemplo, MetaTrader vs. TradeStation : Uma comparação de idiomas). No entanto, nos últimos anos, a TradeStation tem visado os mercados forex de forma muito mais agressiva. Dependendo do seu volume de negociação e / ou nível de conta, é possível negociar os mercados cambiais através da TradeStation sem incorrer em qualquer taxa de plataforma ou pagar comissões. Spreads são supostamente apertados com boa liquidez nos principais pares de forex. Por estas razões, ambas as plataformas foram direcionadas para este projeto.
Vários problemas surgem quando se segmentam múltiplas plataformas simultaneamente. Primeiro, os dados podem ser diferentes em plataformas diferentes, com diferenças em fusos horários, cotações de preços para algumas barras, volume e intervalos de datas disponíveis. Para suavizar essas diferenças, os dados foram obtidos de ambas as plataformas e as estratégias foram construídas em ambas as séries de dados simultaneamente. As melhores estratégias foram, portanto, as que funcionaram bem em ambas as séries de dados, apesar de quaisquer diferenças nos dados.
As configurações de dados usadas no Builder são mostradas abaixo na Figura 1. Como pode ser inferido a partir da tabela Market Data na figura, o mercado forex Euro / dólar foi direcionado (EURUSD) com um tamanho de barra de 4 horas (240 minutos). Outros bar tamanhos ou mercados teriam servido tão bem. Eu só consegui obter tantos dados através da minha plataforma MT4 como indicado pelo intervalo de datas mostrado na Fig. 1 (série de dados # 2), então o mesmo intervalo de datas foi usado na obtenção da série de dados equivalente da TradeStation 1). 80% dos dados foram utilizados para Building (combinados in-sample e "out-of-sample"), com 20% (6/20/14 a 2/10/15) reservados para validação. 80% dos 80% originais foram então definidos para & quot; na amostra & quot; com 20% configurado para & quot; fora da amostra & quot; como mostrado na Fig. 1. O spread bid / ask foi definido em 5 pips, e os custos de negociação de 6 pips ou US $ 60 por lote de tamanho normal (100.000 ações) foram assumidos por turno. Ambas as séries de dados foram incluídas na compilação, conforme indicado pelas marcas de seleção na coluna à esquerda da tabela Market Data.
Figura 1. Configurações de dados de mercado para construir uma estratégia de forex para o MetaTrader 4 e TradeStation.
Outro possível problema ao segmentar várias plataformas é que o Builder foi projetado para duplicar a maneira como cada plataforma suportada calcula seus indicadores, o que pode significar que os valores do indicador serão diferentes dependendo de qual plataforma está selecionada. Para evitar essa possível fonte de discrepância, quaisquer indicadores que avaliem diferentemente no MetaTrader 4 do que na TradeStation devem ser eliminados da compilação, o que significa que os seguintes indicadores devem ser evitados:
Slow D estocástico.
Fast D estocástico.
Todos os outros indicadores disponíveis para ambas as plataformas são calculados da mesma maneira em ambas as plataformas. A TradeStation inclui todos os indicadores disponíveis no Builder, enquanto o MetaTrader 4 não. Portanto, para incluir apenas indicadores que estão disponíveis em ambas as plataformas, a plataforma MetaTrader 4 deve ser selecionada como o tipo de código no Construtor. Isso removerá automaticamente todos os indicadores do conjunto de builds que não estão disponíveis para o MT4, o que deixará os indicadores disponíveis em ambas as plataformas. Além disso, como notei diferenças nos dados de volume obtidos em cada plataforma, removi todos os indicadores dependentes de volume do conjunto de builds. Por último, o indicador de hora do dia foi removido devido a diferenças nos fusos horários entre os arquivos de dados.
Na Fig. 2, abaixo, a lista de indicadores usados ​​no conjunto de compilação é mostrada classificada por se o indicador foi ou não considerado pelo processo de compilação (coluna "Considerar"). Os indicadores removidos da consideração pelas razões discutidas acima são mostrados no topo da lista. Os indicadores restantes, começando com & quot; Simple Mov Ave & quot ;, faziam parte do conjunto de builds.
Figura 2. Seleções de indicadores no Construtor, mostrando os indicadores removidos do conjunto de builds.
As opções de avaliação usadas no processo de construção são mostradas na Figura 3. Como discutido, o MetaTrader 4 foi selecionado como a escolha de saída do código. Depois que as estratégias são construídas no Construtor, qualquer uma das opções na guia Opções de Avaliação, incluindo o tipo de código, pode ser alterada e as estratégias reavaliadas, o que também reescreverá o código em qualquer idioma selecionado. Este recurso foi usado para obter o código da TradeStation para a estratégia final depois que as estratégias foram construídas para o MetaTrader 4.
Figura 3. Opções de avaliação no Builder para a estratégia de forex do EURUSD.
Para criar estratégias stop-and-reverse, todos os tipos de saída foram removidos do conjunto de construção, como mostrado abaixo na Figura 4. Todos os três tipos de ordens de entrada - mercado, parada e limite - foram deixados como & quot; considerar & quot; , o que significa que o processo de construção pode considerar qualquer um deles durante o processo de criação.
Figura 4. Tipos de pedidos selecionados no Construtor para criar uma estratégia de parada e reversão.
O software Builder gera automaticamente condições lógicas baseadas em regras para entrada e / ou saída. Para adicionar uma rede neural à estratégia, basta selecionar a opção & quot; Incluir uma rede neural nas condições de entrada & quot; na guia Opções de Estratégia, conforme mostrado abaixo na Figura 5. As configurações da rede neural foram deixadas em seus padrões. Como parte da lógica de parada e reversão, a opção Lados do mercado foi definida como Longo / Curto e a opção para & quot; Aguardar a saída antes de entrar no novo comércio & quot; foi desmarcada. O último é necessário para permitir que a ordem de entrada saia da posição atual em uma reversão. Todas as outras configurações foram deixadas nos padrões.
Figura 5. Opções de estratégia selecionadas no Builder para criar uma estratégia híbrida usando condições de rede neural e baseada em regras.
A natureza evolutiva do processo de construção no Builder é guiada pela adequação, que é calculada a partir dos objetivos e condições definidos na guia Métricas, conforme mostrado na Fig. 6. Os objetivos de construção foram mantidos simples: maximizando o lucro líquido enquanto minimizava a complexidade, que foi dado um pequeno peso em relação ao lucro líquido. Foi dada maior ênfase às condições de construção, que incluíam o coeficiente de correlação e significância para a qualidade geral da estratégia, bem como a média das barras nos negócios e o número de negócios.
Inicialmente, apenas as barras médias nas negociações foram incluídas como uma condição de construção. No entanto, em algumas das versões iniciais, o lucro líquido estava sendo favorecido em relação à duração da negociação, de modo que a métrica de número de negócios foi adicionada. O intervalo especificado para o número de negociações (entre 209 e 418) é equivalente a comprimentos médios de negociação entre 15 e 30 barras com base no número de barras no período de construção. Como resultado, a adição dessa métrica deu mais ênfase à meta de duração do comércio, o que resultou em mais membros da população com a faixa desejada de comprimentos de comércio.
Figura 6. Objetivos de compilação e condições definidas na guia Métricas determinam como a adequação é calculada.
As "Condições para selecionar estratégias principais" duplique as condições de compilação, exceto que as principais condições de estratégias são avaliadas em todo o intervalo de dados (não incluindo o segmento de validação, que é separado), em vez de apenas sobre o período de compilação, como é o caso das condições de compilação. As principais condições de estratégias são usadas pelo programa para anular quaisquer estratégias que atendam a todas as condições em uma população separada.
As configurações finais são feitas na guia Build Options, como mostrado abaixo na Fig. 7. As opções mais importantes aqui são o tamanho da população, o número de gerações e a opção de redefinir com base na variável "out-of-sample". desempenho. O tamanho da população foi escolhido para ser grande o suficiente para obter uma boa diversidade na população enquanto ainda é pequeno o suficiente para construir em um período de tempo razoável. O número de gerações foi baseado em quanto tempo demorou durante alguns builds preliminares para os resultados começarem a convergir.
Figura 7. Opções de construção incluem o tamanho da população, número de gerações e opções para redefinir a população com base em & quot; fora da amostra & quot; desempenho.
A opção para & quot; Redefinir no desempenho fora da amostra (OOS) & quot; inicia o processo de compilação após o número especificado de gerações, se a condição especificada for atendida; neste caso, a população será reposta se o valor "fora da amostra" O lucro líquido é inferior a US $ 20.000. Este valor foi escolhido com base em testes preliminares para ser um valor suficientemente alto que provavelmente não seria alcançado. Como resultado, o processo de criação foi repetido a cada 30 gerações até ser interrompido manualmente. Essa é uma forma de permitir que o programa identifique estratégias com base nas condições de Principais Estratégias durante um período prolongado de tempo. Periodicamente, a população de Top Strategies pode ser verificada e o processo de construção cancelado quando estratégias adequadas são encontradas.
Observe que eu coloquei "out-of-sample" entre aspas. Quando o & quot; fora da amostra & quot; período é utilizado para repor a população desta maneira, a expressão "fora da amostra" período não é mais verdadeiramente fora de amostra. Como esse período está sendo usado agora para orientar o processo de criação, ele é efetivamente parte do período in-sample. É por isso que é aconselhável reservar um terceiro segmento para validação, como foi discutido acima.
Após várias horas de processamento e várias reconstruções automáticas, foi encontrada uma estratégia adequada na população das Principais Estratégias. Sua curva de capital fechado é mostrada abaixo na Figura 8. A curva de patrimônio demonstra um desempenho consistente em ambos os segmentos de dados com um número adequado de negociações e essencialmente os mesmos resultados em ambas as séries de dados.
Figura 8. Curva de capital de comércio fechado para a estratégia de parada e reversão EURUSD.
Para verificar a estratégia durante o período de validação, os controles de data na guia Mercados (veja a Figura 1) foram alterados para a data final dos dados (2/11/2015), e a estratégia foi reavaliada selecionando-se a opção Avaliar comando no menu Estratégia no Construtor. Os resultados são mostrados abaixo na Figura 9. Os resultados da validação na caixa vermelha demonstram que a estratégia resistiu aos dados não utilizados durante o processo de construção.
Figura 9. Curva de capital de comércio fechado para a estratégia stop-and-reverse do EURUSD, incluindo o período de validação.
A verificação final é ver como a estratégia é executada em cada série de dados separadamente usando a opção de saída de código para essa plataforma. Isso é necessário porque, como explicado acima, pode haver diferenças nos resultados, dependendo (1) do tipo de código e (2) da série de dados. Precisamos verificar se as configurações escolhidas minimizaram essas diferenças, conforme pretendido. Para testar a estratégia do MetaTrader 4, a série de dados da TradeStation foi desmarcada na aba Mercados, e a estratégia foi reavaliada. Os resultados são mostrados abaixo na Fig. 10, que duplica a curva inferior na Fig. 9.
Figura 10. Curva de capital de comércio fechado para a estratégia de parada e reversão EURUSD, incluindo o período de validação, para o MetaTrader 4.
Finalmente, para testar a estratégia para a TradeStation, a série de dados da TradeStation foi selecionada e a série para o MetaTrader 4 foi desmarcada na aba Markets, a saída do código foi alterada para "TradeStation," e a estratégia foi reavaliada. Os resultados são mostrados abaixo na Fig. 11 e parecem ser muito semelhantes à curva do meio na Fig. 9, como esperado.
Figura 11. Curva de capital fechado de negociação para a estratégia stop-and-reverse EURUSD, incluindo o período de validação, para a TradeStation.
O código para ambas as plataformas é fornecido abaixo na Figura 12. Clique na imagem para abrir o arquivo de código para a plataforma correspondente. Examinar o código revela que a parte baseada em regras da estratégia usa diferentes condições relacionadas à volatilidade para os lados longo e curto. As entradas da rede neural consistem em uma variedade de indicadores, incluindo o dia da semana, tendência (ZLTrend), osciladores de alta intraday (InvFisherCycle, InvFisherRSI), bandas de Bollinger e desvio padrão.
A natureza híbrida da estratégia pode ser vista diretamente no código (do código da TradeStation):
Se EntCondL e NNOput <& gt; = 0,5 então começarem.
Compre (& quot; EnMark-L & quot;) ações NShares próximo bar no mercado;
A variável & quot; EntCondL & quot; representa as condições de entrada baseadas em regras e & quot; NNOuput & quot; é a saída da rede neural. Ambas as condições precisam ser verdadeiras para colocar a ordem de entrada longa. A condição de entrada curta funciona da mesma maneira.
Figura 12. Código de estratégia de negociação para a estratégia de parada e reversão EURUSD (esquerda, MetaTrader 4; direita, TradeStation). Clique na figura para abrir o arquivo de código correspondente.
Este artigo analisou o processo de construção de uma estratégia híbrida baseada em regras / rede neural para o EURUSD usando uma abordagem stop-and-reverse (sempre no mercado) com o Adaptrade Builder. Foi mostrado como o código de estratégia pode ser gerado para múltiplas plataformas, selecionando um subconjunto comum dos indicadores que funcionam da mesma maneira em cada plataforma. As configurações necessárias para gerar estratégias que invertem de longo para curto e para trás foram descritas, e foi demonstrado que a estratégia resultante foi realizada de forma positiva em um segmento de dados separado de validação. Verificou-se também que a estratégia gerou resultados semelhantes com a opção de dados e código para cada plataforma.
Como discutido acima, a abordagem stop-and-reverse tem várias desvantagens e pode não ser atraente para todos. No entanto, uma abordagem sempre no mercado pode ser mais atraente com os dados forex porque os mercados forex negociam o tempo todo. Como resultado, não há lacunas de abertura de sessão e as ordens de negociação estão sempre ativas e disponíveis para reverter a negociação quando o mercado muda. O uso de dados intradiários (barras de 4 horas) forneceu mais barras de dados para uso no processo de construção, mas foi, de outra forma, bastante arbitrário, pois a natureza sempre presente no mercado da estratégia significa que as negociações são realizadas durante a noite.
O processo de construção foi permitido para evoluir condições diferentes para entrar longo e curto, resultando em uma estratégia de parada e reversão assimétrica. Apesar do nome, a estratégia resultante entra em negociações longas e curtas em ordens de mercado, embora as ordens de mercado, parada e limite sejam consideradas pelo processo de construção independentemente para cada lado. Na prática, a reversão do longo para o curto significaria vender curto o dobro do número de ações no mercado, uma vez que a estratégia era atualmente longa; Por exemplo, se a atual posição comprada fosse 100.000 ações, você venderia 200.000 ações a descoberto no mercado. Da mesma forma, se a posição atual fosse de 100.000 ações, você compraria 200.000 ações no mercado para reverter de curto para longo prazo.
Um histórico de preços mais curto foi usado do que seria ideal. No entanto, os resultados foram positivos no segmento de validação, sugerindo que a estratégia não foi excessiva. Isso apoia a ideia de que uma rede neural pode ser usada em uma estratégia de negociação sem necessariamente ajustar a estratégia ao mercado.
A estratégia apresentada aqui não se destina à negociação real e não foi testada em rastreamento ou negociação em tempo real. No entanto, este artigo pode ser usado como um modelo para o desenvolvimento de estratégias semelhantes para o EURUSD ou outros mercados. Como sempre, qualquer estratégia de negociação que você desenvolver deve ser testada minuciosamente em rastreamento em tempo real ou em dados separados para validar os resultados e se familiarizar com as características de negociação da estratégia antes da negociação ao vivo.
Este artigo foi publicado na edição de fevereiro de 2015 do boletim da Adaptrade Software.
OS RESULTADOS DE DESEMPENHO HIPOTÉTICOS OU SIMULADOS TÊM CERTAS LIMITAÇÕES INERENTES. A PARTIR DE UM REGISTRO DE DESEMPENHO REAL, OS RESULTADOS SIMULADOS NÃO REPRESENTAM A NEGOCIAÇÃO REAL. TAMBÉM, UMA VEZ QUE AS COMERCIALIZAÇÕES NAO SÃO REALMENTE EXECUTADAS, OS RESULTADOS PODEM TER COMPENSADO OU SUPERIOR AO IMPACTO, SE ALGUM, DE DETERMINADOS FATORES DE MERCADO, COMO A FALTA DE LIQUIDEZ. PROGRAMAS DE NEGOCIAÇÃO SIMULADOS EM GERAL TAMBÉM ESTÃO SUJEITOS AO FATO DE QUE ELES FORAM CONCEBIDOS COM O BENEFÍCIO DE HINDSIGHT. NENHUMA REPRESENTAÇÃO ESTÁ SENDO FEITA QUE QUALQUER CONTA PODERÁ OU POSSIBILITAR LUCROS OU PERDAS SIMILARES AOS APRESENTADOS.
Se você gostaria de ser informado sobre novos desenvolvimentos, novidades e ofertas especiais da Adaptrade Software, por favor, junte-se à nossa lista de e-mail. Obrigado.
Copyright © 2004-2015 Adaptrade Software. Todos os direitos reservados.

10 equívocos sobre redes neurais.
As redes neurais são uma das classes mais populares e poderosas dos algoritmos de aprendizado de máquina. Em finanças quantitativas, redes neurais são frequentemente usadas para previsão de séries temporais, construindo indicadores proprietários, negociação algorítmica, classificação de títulos e modelagem de risco de crédito. Eles também foram usados ​​para construir modelos de processos estocásticos e derivativos de preço. Apesar de sua utilidade, as redes neurais tendem a ter uma má reputação porque seu desempenho é "temperamental". Na minha opinião, isso pode ser atribuído ao projeto de rede ruim devido a equívocos sobre como funcionam as redes neurais. Este artigo discute alguns desses equívocos.
1. Redes neurais não são modelos do cérebro humano.
O cérebro humano é um dos grandes mistérios do nosso tempo e os cientistas não chegaram a um consenso sobre exatamente como ele funciona. Duas teorias do cérebro existem, nomeadamente, a teoria das células da avó e a teoria da representação distribuída. A primeira teoria afirma que os neurônios individuais têm alta capacidade de informação e são capazes de representar conceitos complexos, como sua avó ou até mesmo Jennifer Aniston. A segunda teoria dos neurônios afirma que os neurônios são muito mais simples e as representações de objetos complexos estão distribuídas em muitos neurônios. As redes neurais artificiais são vagamente inspiradas pela segunda teoria.
Uma das razões pelas quais acredito que as redes neurais de geração atual não são capazes de senciência (um conceito diferente de inteligência) é porque acredito que os neurônios biológicos são muito mais complexos que os neurônios artificiais.
Outra grande diferença entre o cérebro e as redes neurais é o tamanho e a organização. Os cérebros humanos contêm muito mais neurônios e sinapses que a rede neural e são auto-organizáveis ​​e adaptativos. As redes neurais, por comparação, são organizadas de acordo com uma arquitetura. As redes neurais não são "auto-organizadas" no mesmo sentido que o cérebro, que muito mais se assemelha a um gráfico do que a uma rede ordenada.
Algumas visões muito interessantes do cérebro, criadas pelo cérebro de última geração, imaginam técnicas. Clique na imagem para mais informações.
Então, o que isso significa? Pense desta maneira: uma rede neural é inspirada no cérebro da mesma forma que o estádio olímpico em Pequim é inspirado por um ninho de pássaro. Isso não significa que o estádio olímpico seja - um ninho de pássaro, isso significa que alguns elementos de ninhos de pássaros estão presentes no desenho do estádio. Em outras palavras, elementos do cérebro estão presentes no projeto de redes neurais, mas são muito menos semelhantes do que você imagina.
De fato, as redes neurais estão mais relacionadas aos métodos estatísticos, como o ajuste de curvas e a análise de regressão, do que o cérebro humano. No contexto das finanças quantitativas, penso que é importante lembrar que, embora possa parecer legal dizer que algo é "inspirado pelo cérebro", essa afirmação pode resultar em expectativas irrealistas ou medo. Para mais informações, consulte 'Não! Inteligência Artificial não é uma ameaça existencial '.
Um exemplo de ajuste de curva também conhecido como aproximação de função. As redes neurais são bastante usadas para aproximar funções matemáticas complexas.
2. Redes neurais não são uma "forma fraca" de estatísticas.
Redes neurais consistem em camadas de nós interconectados. Nós individuais são chamados de perceptrons e se assemelham a uma regressão linear múltipla. A diferença entre uma regressão linear múltipla e um perceptron é que um perceptron alimenta o sinal gerado por uma regressão linear múltipla em uma função de ativação que pode ou não ser não-linear. Em um perceptron multicamada (MLP), os perceptrons são organizados em camadas e as camadas são conectadas com outras. No MLP existem três tipos de camadas, ou seja, a camada de entrada, camada (s) oculta (s) e a camada de saída. A camada de entrada recebe padrões de entrada e a camada de saída pode conter uma lista de classificações ou sinais de saída para os quais esses padrões de entrada podem mapear. Camadas ocultas ajustam os pesos nessas entradas até que o erro da rede neural seja minimizado. Uma interpretação disso é que as camadas ocultas extraem características salientes nos dados de entrada que têm poder preditivo em relação às saídas.
Entradas de Mapeamento: Saídas.
Um perceptron recebe um vetor de entradas, consistindo em atributos. Este vetor de entradas é chamado de padrão de entrada. Estas entradas são ponderadas de acordo com o vetor de peso pertencente a esse perceptron,. No contexto da regressão linear múltipla, estes podem ser considerados coeficientes de regressão ou beta's. O sinal de entrada líquido, do perceptron, é geralmente a soma do produto do padrão de entrada e seus pesos. Neurônios que usam o produto da soma são chamados de unidades de soma.
O sinal de entrada líquido, menos uma polarização é então alimentado em alguma função de ativação,. Funções de ativação são geralmente monotonicamente aumentando funções que são limitadas entre um ou (isto é discutido mais adiante neste artigo). As funções de ativação podem ser lineares ou não lineares.
A rede neural mais simples é aquela que tem apenas um neurônio que mapeia as entradas para uma saída. Dado um padrão, o objetivo dessa rede seria minimizar o erro do sinal de saída, em relação a algum valor alvo conhecido para um dado padrão de treinamento. Por exemplo, se o neurônio deveria mapear para -1, mas o mapeasse para 1, então o erro, medido pela distância soma quadrada, do neurônio seria 4,.
Como mostrado na imagem acima, os perceptrons são organizados em camadas. A primeira camada ou perceptrons, chamada input mais tarde, recebe os patterns, no conjunto de treinamento. A última camada é mapeada para as saídas esperadas para esses padrões. Um exemplo disso é que os padrões podem ser uma lista de quantidades para diferentes indicadores técnicos relativos a uma segurança e os resultados potenciais podem ser as categorias.
Uma camada oculta é aquela que recebe como entradas as saídas de outra camada; e para o qual as saídas formam as entradas em outra camada. Então, o que essas camadas ocultas fazem? Uma interpretação é que eles extraem características importantes nos dados de entrada que têm poder preditivo em relação às saídas. Isso é chamado de extração de características e, de certa forma, desempenha uma função semelhante às técnicas estatísticas, como a análise de componentes principais.
As redes neurais profundas possuem um grande número de camadas ocultas e são capazes de extrair recursos muito mais profundos dos dados. Recentemente, redes neurais profundas tiveram um desempenho particularmente bom para problemas de reconhecimento de imagem. Uma ilustração da extração de características no contexto do reconhecimento de imagens é mostrada abaixo,
Eu acho que um dos problemas enfrentados pelo uso de redes neurais profundas para negociação (além do risco óbvio de overfitting) é que as entradas na rede neural são quase sempre muito pré-processadas, o que significa que pode haver poucos recursos para realmente extrair porque as entradas já são, em certa medida, recursos.
Regras de Aprendizagem.
Como mencionado anteriormente, o objetivo da rede neural é minimizar alguma medida de erro,. A medida mais comum de erro é sum-squar-error, embora essa métrica seja sensível a valores discrepantes e possa ser menos apropriada do que o erro de rastreamento no contexto dos mercados financeiros.
Erro quadrático de soma (SSE)
Dado que o objetivo da rede é minimizar, podemos usar um algoritmo de otimização para ajustar os pesos na rede neural. O algoritmo de aprendizado mais comum para redes neurais é o algoritmo de descida de gradiente, embora outros algoritmos de otimização potencialmente melhores possam ser usados. A descida de gradiente funciona calculando a derivada parcial do erro em relação aos pesos para cada camada na rede neural e, em seguida, movendo-se na direção oposta ao gradiente (porque queremos minimizar o erro da rede neural). Minimizando o erro, maximizamos o desempenho da rede neural na amostra.
Expressa matematicamente a regra de atualização para os pesos na rede neural () é dada por,
onde está a taxa de aprendizado que controla quão rapidamente ou lentamente a rede neural converge. Não vale a pena que o cálculo da derivada parcial de com respeito ao sinal de entrada líquido para um padrão represente um problema para qualquer função de ativação descontínua; qual é uma razão pela qual os algoritmos de otimização alternativos podem ser usados. A escolha da taxa de aprendizado tem um grande impacto no desempenho da rede neural. Valores pequenos podem resultar em convergência muito lenta, enquanto valores altos podem resultar em muita variação no treinamento.
Apesar do que alguns dos estatísticos que conheci no meu tempo acreditam, as redes neurais não são apenas uma "forma fraca de estatísticas para analistas preguiçosos" (na verdade já me disseram isso antes e foi muito engraçado); redes neurais representam uma abstração de técnicas estatísticas sólidas que datam de centenas de anos. Para uma explicação fantástica das estatísticas por trás das redes neurais, recomendo a leitura deste capítulo. Dito isto, concordo que alguns praticantes gostam de tratar as redes neurais como uma "caixa preta" que pode ser lançada em qualquer problema sem antes tomar tempo para entender a natureza do problema e se as redes neurais são ou não uma escolha apropriada. . Um exemplo disso é o uso de redes neurais para negociação; os mercados são dinâmicos, mas as redes neurais assumem que a distribuição dos padrões de entrada permanece estacionária ao longo do tempo. Isso é discutido em mais detalhes aqui.
3. Redes neurais vêm em muitas arquiteturas.
Até agora, acabamos de discutir a arquitetura de rede neural mais simples, a saber, o perceptron multicamada. Existem muitas arquiteturas de redes neurais diferentes (muitas para mencionar aqui) e o desempenho de qualquer rede neural é uma função de sua arquitetura e pesos. Muitos avanços modernos no campo da aprendizagem de máquina não vêm de repensar o modo como os algoritmos de percepção e otimização funcionam, mas de serem criativos em relação a como esses componentes se encaixam. Abaixo, discuto algumas arquiteturas de redes neurais muito interessantes e criativas que foram desenvolvidas ao longo do tempo,
Redes Neurais Recorrentes - algumas ou todas as conexões fluem para trás, o que significa que existem loops de feedback na rede. Acredita-se que essas redes tenham um desempenho melhor em dados de séries temporais. Como tal, podem ser particularmente relevantes no contexto dos mercados financeiros. Para mais informações, aqui está um link para um artigo fantástico intitulado O desempenho irracional de redes neurais recorrentes [profundas].
Este diagrama mostra três arquiteturas de redes neurais recorrentes populares, a saber, a rede neural Elman, a rede neural Jordan e a rede neural de camada única Hopfield.
Uma arquitetura interessante de rede neural recorrente mais recente é a Máquina de Turing Neural. Esta rede combina uma arquitetura de rede neural recorrente com a memória. Foi demonstrado que essas redes neurais são Turing completas e foram capazes de aprender algoritmos de ordenação e outras tarefas de computação.
Rede neural de Boltzmann - uma das primeiras redes neurais totalmente conectadas foi a rede neural de Boltzmann, uma máquina de Boltzmann. Essas redes foram as primeiras redes capazes de aprender representações internas e resolver problemas combinatórios muito difíceis. Uma interpretação da máquina de Boltzmann é que ela é uma versão de Monte Carlo da rede neural recorrente de Hopfield. Apesar disso, a rede neural pode ser bastante difícil de treinar, mas quando restrita, pode se mostrar mais eficiente que as redes neurais tradicionais. A restrição mais popular nas máquinas de Boltzmann é proibir as conexões diretas entre os neurônios ocultos. Essa arquitetura em particular é chamada de Máquina Boltzmann Restrita, que é usada nas Máquinas Profundas da Botlzmann.
Este diagrama mostra como as diferentes máquinas Boltzmann com conexões entre os diferentes nós podem afetar significativamente os resultados da rede neural (gráficos à direita das redes)
Redes neurais profundas - existem redes neurais com várias camadas ocultas. Redes neurais profundas tornaram-se extremamente populares nos anos mais recentes devido ao seu sucesso inigualável em problemas de reconhecimento de imagem e voz. O número de arquiteturas de redes neurais profundas está crescendo rapidamente, mas algumas das arquiteturas mais populares incluem redes de convicções profundas, redes neurais convolucionais, máquinas Boltzmann com restrições profundas, auto-codificadores empilhados e muito mais. Um dos maiores problemas com as redes neurais profundas, especialmente no contexto dos mercados financeiros que não são estacionários, é o superajuste. Mais informações, veja DeepLearning.
Este diagrama mostra uma rede neural profunda que consiste em várias camadas ocultas.
Redes neurais adaptativas - são redes neurais que simultaneamente adaptam e otimizam suas arquiteturas enquanto aprendem. Isso é feito aumentando a arquitetura (adicionando mais neurônios ocultos) ou encolhendo-os (podando neurônios ocultos desnecessários). Acredito que as redes neurais adaptativas são mais apropriadas para os mercados financeiros, porque os mercados não são estacionários. Digo isso porque os recursos extraídos pela rede neural podem se fortalecer ou enfraquecer com o tempo, dependendo da dinâmica do mercado. A implicação disso é que qualquer arquitetura que funcionasse otimamente no passado precisaria ser alterada para funcionar de maneira otimizada hoje.
Este diagrama mostra dois tipos diferentes de arquiteturas de redes neurais adaptativas. A imagem da esquerda é uma rede neural em cascata e a imagem da direita é um mapa auto-organizado.
Redes de base radial - embora não seja um tipo diferente de arquitetura no sentido de perceptrons e conexões, as funções de base radial fazem uso de funções de base radial como suas funções de ativação, são funções valorizadas cuja saída depende da distância de um determinado ponto. As funções de base radial mais comumente usadas são a distribuição gaussiana. Como as funções de base radial podem assumir formas muito mais complexas, elas foram originalmente usadas para executar a interpolação de função. Como tal, uma rede neural de função de base radial pode ter uma capacidade de informação muito maior. As funções de base radial também são usadas no kernel de uma máquina de vetores de suporte.
Este diagrama mostra como o ajuste de curvas pode ser feito usando funções de base radial.
Em resumo, existem muitas centenas de arquiteturas de redes neurais e o desempenho de uma rede neural pode ser significativamente superior a outra. Assim, analistas quantitativos interessados ​​em usar redes neurais provavelmente testariam múltiplas arquiteturas de redes neurais e considerariam combinar suas saídas juntas em um conjunto para maximizar seu desempenho de investimento. Eu recomendo a leitura do meu artigo, Todos os seus modelos estão errados, 7 fontes de risco do modelo, antes de usar redes neurais para negociação, porque muitos dos problemas ainda se aplicam.
4. O tamanho é importante, mas maior nem sempre é melhor.
Tendo selecionado uma arquitetura, deve-se então decidir quão grande ou pequena deve ser a rede neural. Quantas entradas existem? Quantos neurônios escondidos devem ser usados? Quantas camadas ocultas devem ser usadas (se estivermos usando uma rede neural profunda)? E quantos neurônios de saídas são necessários? As razões pelas quais essas questões são importantes é porque, se a rede neural é muito grande (muito pequena), a rede neural poderia potencialmente suprimir (underfit) os dados, o que significa que a rede não iria generalizar bem fora da amostra.
Quantos e quais entradas devem ser usadas?
O número de insumos depende do problema a ser resolvido, da quantidade e qualidade dos dados disponíveis e, talvez, de alguma criatividade. Entradas são simplesmente variáveis ​​que acreditamos ter algum poder preditivo sobre a variável dependente que está sendo prevista. Se as entradas para um problema não forem claras, você pode determinar sistematicamente quais variáveis ​​devem ser incluídas observando as correlações e a correlação cruzada entre as variáveis ​​independentes potenciais e as variáveis ​​dependentes. Essa abordagem é detalhada no artigo O que impulsiona o crescimento real do PIB?
Existem dois problemas com o uso de correlações para selecionar variáveis ​​de entrada. Em primeiro lugar, se você estiver usando uma métrica de correlação linear, poderá excluir inadvertidamente variáveis ​​úteis. Em segundo lugar, duas variáveis ​​relativamente não correlacionadas poderiam potencialmente ser combinadas para produzir uma variável fortemente correlacionada. Se você observar as variáveis ​​isoladamente, poderá perder essa oportunidade. Para superar o segundo problema, você poderia usar a análise de componentes principais para extrair os autovetores úteis (combinações lineares das variáveis) como entradas. Dito isto, um problema com isto é que os autovetores podem não generalizar bem e também assumem que as distribuições dos padrões de entrada são estacionárias.
Outro problema ao selecionar variáveis ​​é a multicolinearidade. A multicolinearidade é quando duas ou mais das variáveis ​​independentes inseridas no modelo são altamente correlacionadas. No contexto dos modelos de regressão, isso pode fazer com que os coeficientes de regressão mudem de forma irregular em resposta a pequenas alterações no modelo ou nos dados. Dado que redes neurais e modelos de regressão são similares, suspeito que isso também seja um problema para redes neurais.
Por último, mas não menos importante, um viés estatístico que pode ser introduzido ao selecionar variáveis ​​é o viés de variável omitida. O viés de variável omitida ocorre quando um modelo é criado, o que deixa de fora uma ou mais variáveis ​​causais importantes. A tendência é criada quando o modelo compensa incorretamente a variável ausente, subestimando ou superestimando o efeito de uma das outras variáveis, ou seja, os pesos podem se tornar muito grandes nessas variáveis ​​ou o SSE será grande.
Quantos neurônios escondidos devo usar?
O número ideal de unidades ocultas é específico do problema. Dito isso, como regra geral, quanto mais unidades ocultas forem usadas, mais provável será o risco de overfitting. O overfitting é quando a rede neural não aprende as propriedades estatísticas subjacentes dos dados, mas "memoriza" os padrões e qualquer ruído que possam conter. Isso resulta em redes neurais que apresentam bom desempenho na amostra, mas mal fora da amostra. Então, como podemos evitar overfitting? Existem duas abordagens populares usadas na indústria, a saber, a interrupção e a regularização precoces, e depois há minha abordagem favorita, pesquisa global,
A interrupção antecipada envolve a divisão do seu conjunto de treinamento no conjunto de treinamento principal e um conjunto de validação. Então, em vez de treinar uma rede neural para um número fixo de iterações, você treina até que o desempenho da rede neural no conjunto de validação comece a se deteriorar. Essencialmente, isso impede que a rede neural use todos os parâmetros disponíveis e limita sua capacidade de simplesmente memorizar todos os padrões que vê. A imagem à direita mostra dois possíveis pontos de parada para a rede neural (aeb).
A regularização penaliza a rede neural por usar arquiteturas complexas. Complexidade nesta abordagem é medida pelo tamanho dos pesos da rede neural. A regularização é feita adicionando um termo para somar a função de objetivo de erro quadrático que depende do tamanho dos pesos. Isto é o equivalente a adicionar um prior que essencialmente faz a rede neural acreditar que a função que está aproximando é suave,
onde está o número de pesos na rede neural. Os parâmetros e controlam o grau em que a rede neural sobre ou ajusta os dados. Bons valores para e podem ser derivados usando análise e otimização bayesiana. Isso e o acima são explicados em mais detalhes neste capítulo brilhante.
Minha técnica favorita, que também é de longe a mais computacionalmente cara, é a pesquisa global. Nessa abordagem, um algoritmo de busca é usado para testar diferentes arquiteturas de redes neurais e chegar a uma escolha quase ideal. Isso é mais frequentemente feito usando algoritmos genéticos que são discutidos mais adiante neste artigo.
Quais são as saídas?
As redes neurais podem ser usadas para regressão ou classificação. No modelo de regressão, um único valor é gerado, o qual pode ser mapeado para um conjunto de números reais, significando que apenas um neurônio de saída é necessário. No modelo de classificação, um neurônio de saída é necessário para cada classe potencialmente à qual o padrão pode pertencer. Se as classes forem técnicas desconhecidas de redes neurais não supervisionadas, tais como mapas auto-organizados devem ser usados.
Em conclusão, a melhor abordagem é seguir a Navalha Ockhams. A navalha de Ockham argumenta que, para dois modelos de desempenho equivalente, o modelo com menos parâmetros livres generalizará melhor. Por outro lado, nunca se deve optar por um modelo excessivamente simplista ao custo do desempenho. Da mesma forma, não se deve supor que só porque uma rede neural tem mais neurônios ocultos e talvez mais camadas ocultas, ela superará uma rede muito mais simples. Infelizmente, parece-me que muita ênfase é colocada em grandes redes e pouca ênfase é colocada em tomar boas decisões de design. No caso de redes neurais, maior nem sempre é melhor.
Entidades não devem ser multiplicadas além da necessidade - William of Ockham.
As entidades não devem ser reduzidas ao ponto de inadequação - Karl Menger.
5. Muitos algoritmos de treinamento existem para redes neurais.
O algoritmo de aprendizagem de uma rede neural tenta otimizar os pesos da rede neural até que alguma condição de parada tenha sido atendida. Essa condição geralmente ocorre quando o erro da rede atinge um nível aceitável de precisão no conjunto de treinamento, quando o erro da rede no conjunto de validação começa a se deteriorar ou quando o orçamento computacional especificado foi esgotado. O algoritmo de aprendizado mais comum para redes neurais é o algoritmo de retropropagação que usa a descida de gradiente estocástica que foi discutida anteriormente neste artigo. A retropropagação consiste em duas etapas:
A passagem de feedforward - o conjunto de dados de treinamento é passado pela rede e a saída da rede neural é gravada e o erro da rede é calculado Propagação para trás - o sinal de erro é passado de volta pela rede e os pesos da rede neural são otimizado usando gradiente descendente.
Existem alguns problemas com essa abordagem. Ajustar todos os pesos de uma só vez pode resultar em um movimento significativo da rede neural no espaço de peso, o algoritmo de descida de gradiente é bastante lento e é suscetível aos mínimos locais. Mínimos locais são um problema para tipos específicos de redes neurais, incluindo todas as redes neurais de links de produtos. Os dois primeiros problemas podem ser abordados usando variantes de gradiente descendente incluindo gradiente de descida de momento (QuickProp), descendente de gradiente de Nesterov (NAG), o algoritmo de gradiente adaptativo (AdaGrad), Propagação resiliente (RProp) e propagação quadrática média de raiz ( RMSProp). Como pode ser visto na imagem abaixo, melhorias significativas podem ser feitas no algoritmo clássico de gradiente descendente.
Dito isso, esses algoritmos não podem superar mínimos locais e também são menos úteis ao tentar otimizar a arquitetura e os pesos da rede neural simultaneamente. Para alcançar essa otimização global, são necessários algoritmos. Dois algoritmos populares de otimização global são a Otimização de Enxame de Partículas (PSO) e o Algoritmo Genético (GA). Aqui está como eles podem ser usados ​​para treinar redes neurais:
Representação vetorial de rede neural - codificando a rede neural como um vetor de pesos, cada um representando o peso de uma conexão na rede neural, podemos treinar redes neurais usando a maioria dos algoritmos de busca meta-heurística. Essa técnica não funciona bem com redes neurais profundas porque os vetores se tornam muito grandes.
Este diagrama ilustra como uma rede neural pode ser representada em uma notação vetorial e relacionada ao conceito de um espaço de pesquisa ou cenário de adequação.
Otimização de Enxame de Partículas - para treinar uma rede neural usando um PSO, construímos uma população / enxame dessas redes neurais. Cada rede neural é representada como um vetor de pesos e é ajustada de acordo com sua posição da melhor partícula global e é melhor pessoal.
A função de adequação é calculada como o erro de soma quadrática da rede neural reconstruída após a conclusão de um passo de feedforward do conjunto de dados de treinamento. A principal consideração com essa abordagem é a velocidade das atualizações de peso. Isso ocorre porque, se os pesos forem ajustados muito rapidamente, o erro de soma quadrática das redes neurais ficará estagnado e nenhum aprendizado ocorrerá.
Este diagrama mostra como as partículas são atraídas umas às outras em um único algoritmo de Otimização por Enxame de Partícula de enxame.
Algoritmo Genético - para treinar uma rede neural usando um algoritmo genético, primeiro construímos uma população de vetores de redes neurais representadas. Em seguida, aplicamos os três operadores genéticos nessa população para desenvolver redes neurais melhores e melhores. Esses três operadores são,
Seleção - Usando o erro de soma quadrática de cada rede calculado após um passo de feedforward, classificamos a população de redes neurais. Os x% superiores da população são selecionados para "sobreviver" até a próxima geração e ser usados ​​para crossover. Crossover - Os x% superiores dos genes da população podem cruzar um com o outro. Este processo forma 'descendentes'. No contexto, cada descendente representará uma nova rede neural com pesos de ambas as redes neurais 'pai'. Mutação - este operador é obrigado a manter a diversidade genética na população. Uma pequena porcentagem da população é selecionada para sofrer mutação. Alguns dos pesos nessas redes neurais serão ajustados aleatoriamente dentro de um intervalo específico.
Este algoritmo mostra os operadores genéticos de seleção, cruzamento e mutação sendo aplicados a uma população de redes neurais representadas como vetores.
Além desses algoritmos de busca metaheurística baseados na população, outros algoritmos têm sido usados ​​para treinar redes neurais, incluindo retropropagação com impulso adicional, evolução diferencial, simulated annealing e muito mais. Pessoalmente, eu recomendaria usar uma combinação de algoritmos de otimização local e global para superar as deficiências de ambos.
6. As redes neurais nem sempre exigem muitos dados.
As redes neurais podem usar uma das três estratégias de aprendizado, uma estratégia de aprendizado supervisionada, uma estratégia de aprendizado não supervisionada ou uma estratégia de aprendizado por reforço. A aprendizagem supervisionada requer pelo menos dois conjuntos de dados, um conjunto de treinamento que consiste em entradas com a saída esperada e um conjunto de testes que consiste em entradas sem a saída esperada. Ambos os conjuntos de dados devem consistir em dados marcados, isto é, padrões de dados para os quais o alvo é conhecido antecipadamente. Estratégias de aprendizado não supervisionadas são normalmente usadas para descobrir estruturas ocultas (como cadeias ocultas de Markov) em dados não rotulados. Eles se comportam de maneira semelhante aos algoritmos de clustering. O aprendizado por reforço é baseado na premissa simples de recompensar redes neurais por bons comportamentos e puni-los por maus comportamentos. Como as estratégias de aprendizado não supervisionadas e de reforço não exigem que os dados sejam rotulados, eles podem ser aplicados a problemas sub-formulados em que a saída correta não é conhecida.
Aprendizagem não supervisionada.
Uma das mais populares arquiteturas de redes neurais não supervisionadas é o Mapa de Auto-Organização (também conhecido como Mapa de Kohonen). Os Mapas Auto-organizados são essencialmente uma técnica de dimensionamento multidimensional que constrói uma aproximação da função de densidade de probabilidade de algum conjunto de dados subjacente, preservando a estrutura topológica desse conjunto de dados. Isso é feito mapeando os vetores de entrada, no conjunto de dados, para vetores de peso, (neurônios) no mapa de características,. Preservar a estrutura topológica significa simplesmente que, se dois vetores de entrada estão próximos, então os neurônios para os quais esses vetores de entrada mapeiam também estarão próximos um do outro.
Para obter mais informações sobre mapas de auto-organização e como eles podem ser usados ​​para produzir conjuntos de dados de baixa dimensionalidade, clique aqui. Outra aplicação interessante da SOM é a coloração de gráficos de séries temporais para negociação de ações. Isso é feito para mostrar quais são as condições de mercado naquele momento. Este site fornece um tutorial detalhado e trechos de código para implementar a idéia para melhorar as estratégias de negociação Forex.
Aprendizado por Reforço.
Estratégias de aprendizagem de reforço consistem em três componentes. Uma política que especifica como a rede neural tomará decisões, por exemplo usando indicadores técnicos e fundamentais. Uma função de recompensa que distingue o bem do mau, e. fazendo vs perdendo dinheiro. E uma função de valor que especifica o objetivo de longo prazo. No contexto dos mercados financeiros (e jogos), as estratégias de aprendizado por reforço são particularmente úteis porque a rede neural aprende a otimizar uma quantidade específica, como uma medida apropriada de retorno ajustado ao risco.
Este diagrama mostra como uma rede neural pode ser reforçada negativamente ou positivamente.
7. As redes neurais não podem ser treinadas em nenhum dado.
Uma das maiores razões pelas quais as redes neurais podem não funcionar é porque as pessoas não processam adequadamente os dados que estão sendo alimentados na rede neural. A normalização de dados, a remoção de informações redundantes e a remoção de valores discrepantes devem ser realizadas para melhorar a probabilidade de um bom desempenho da rede neural.
Normalização de dados - redes neurais consistem em várias camadas de perceptrons ligadas por conexões ponderadas. Cada perceptron contém uma função de ativação que tem um 'alcance ativo' (exceto para funções de base radial). Entradas na rede neural precisam ser escalonadas dentro dessa faixa, de modo que a rede neural seja capaz de diferenciar entre diferentes padrões de entrada.
Por exemplo, dado um sistema de negociação de rede neural que recebe indicadores sobre um conjunto de títulos como entradas e saídas, se cada título deve ser comprado ou vendido. Uma das entradas é o preço da segurança e estamos usando a função de ativação Sigmoid. No entanto, a maioria dos títulos custa entre 5 $ e 15 $ por ação e a saída da função Sigmoid se aproxima de 1,0. Assim, a saída da função Sigmoid será 1.0 para todos os títulos, todos os perceptrons serão "disparados" e a rede neural não aprenderá.
Redes neurais treinadas em dados não processados ​​produzem modelos em que "as luzes estão acesas, mas ninguém está em casa"
Remoção de valores discrepantes - um valor discrepante é muito menor ou maior do que a maioria dos outros valores em alguns conjuntos de dados. Os outliers podem causar problemas com técnicas estatísticas, como análise de regressão e ajuste de curva, porque quando o modelo tenta "acomodar" o outlier, o desempenho do modelo em todos os outros dados se deteriora,
Este diagrama mostra o efeito da remoção de um outlier dos dados de treinamento para uma regressão linear. Os resultados são comparáveis ​​para redes neurais. Fonte da imagem: statistics. laerd / statistical-guides / img / pearson-6.png.
The illustration shows that trying to accommodate an outlier into the linear regression model results in a poor fits of the data set. The effect of outliers on non-linear regression models, including neural networks, is similar. Therefore it is good practice is to remove outliers from the training data set. That said, identifying outliers is a challenge in and of itself, this tutorial and paper discuss existing techniques for outlier detection and removal.
Remove redundancy - when two or more of the independent variables being fed into the neural network are highly correlated (multiplecolinearity) this can negatively affect the neural networks learning ability. Highly correlated inputs also mean that the amount of unique information presented by each variable is small, so the less significant input can be removed. Another benefit to removing redundant variables is faster training times. Adaptive neural networks can be used to prune redundant connections and perceptrons.
8. Neural networks may need to be retrained.
Given that you were able to train a neural network to trade successfully in and out of sample this neural network may still stop working over time. This is not a poor reflection on neural networks but rather an accurate reflection of the financial markets. Financial markets are complex adaptive systems meaning that they are constantly changing so what worked yesterday may not work tomorrow. This characteristic is called non-stationary or dynamic optimization problems and neural networks are not particularly good at handling them.
Dynamic environments, such as financial markets, are extremely difficult for neural networks to model. Two approaches are either to keep retraining the neural network over-time, or to use a dynamic neural network. Dynamic neural networks 'track' changes to the environment over time and adjust their architecture and weights accordingly. They are adaptive over time. For dynamic problems, multi-solution meta-heuristic optimization algorithms can be used to track changes to local optima over time. One such algorithm is the multi-swarm optimization algorithm, a derivative of the particle swarm optimization. Additionally, genetic algorithms with enhanced diversity or memory have also been shown to be robust in dynamic environments.
The illustration below demonstrates how a genetic algorithm evolves over time to find new optima in a dynamic environment. This illustration also happens to mimic trade crowding which is when market participants crowd a profitable trading strategy, thereby exhausting trading opportunities causing the trade to become less profitable.
This animated image shows a dynamic fitness landscape (search space) change over time. Image source: en. wikipedia/wiki/Fitness_landscape.
9. Neural networks are not black boxes.
By itself a neural network is a black-box. This presents problems for people wanting to use them. For example, fund managers wouldn't know how a neural network makes trading decisions, so it is impossible to assess the risks of the trading strategies learned by the neural network. Similarly, banks using neural networks for credit risk modelling would not be able to justify why a customer has a particular credit rating, which is a regulatory requirement. That having been said, state of the art rule-extraction algorithms have been developed to vitrify some neural network architectures. These algorithms extract knowledge from the neural networks as either mathematical expressions, symbolic logic, fuzzy logic, or decision trees.
This image shows a neural network as a black box and how it related to rule extraction techniques.
Mathematical rules - algorithms have been developed which can extract multiple linear regression lines from neural networks. The problem with these techniques is that the rules are often still difficult to understand, therefore these do not solve the 'black-box' problem.
Propositional logic - propositional logic is a branch of mathematical logic which deals with operations done on discrete valued variables. These variables, such as A or B, are often either TRUE or FALSE, but they could occupy values within a discrete range e. g. .
Logical operations can then be applied to those variables such as OR, AND, and XOR. The results are called predicates which can also be quantified over sets using the exists or for-all quantifiers. This is the difference between predicate and propositional logic. If we had a simple neural network which Price (P), Simple Moving Average (SMA), and Exponential Moving Average (EMA) as inputs and we extracted a trend following strategy from the neural network in propositional logic, we might get rules like this,
Fuzzy logic - fuzzy logic is where probability and propositional logic meet. The problem with propositional logic is that is deals in absolutes e. g. BUY or SELL, TRUE or FALSE, 0 or 1. Therefore for traders there is no way to determine the confidence of these results. Fuzzy logic overcomes this limitation by introducing a membership function which specifies how much a variable belongs to a particular domain. For example, a company (GOOG) might belong 0.7 to the domain and 0.3 to the domain . Combinations of neural networks and fuzzy logic are called Neuro-Fuzzy systems. This research survey discusses various fuzzy rule extraction techniques.
Decision trees - decision trees show how decisions are made when given certain information. This article describes how to evolve security analysis decision trees using genetic programming. Decision tree induction is the term given to the process of extracting decision trees from neural networks.
An example of a simple trading strategy represented using a decision tree. The triangular boxes represent decision nodes, these could be to BUY, HOLD, or SELL a company. Each box represents a tuple of <indicator, inequality,="" value="">. An example might be <sma,>, 25> or <ema, <="," 30="">.
10. Neural networks are not hard to implement.
This list is updated, from time to time, when I have time. Last updated: November 2015.
Speaking from experience, neural networks are quite challenging to code from scratch. Luckily there are now hundreds open source and proprietary packages which make working with neural networks a lot easier. Below is a list of packages which quants may find useful for quantitative finance. The list is NOT exhaustive, and is ordered alphabetically. If you have any additional comments, or frameworks to add, please share via the comment section.
"Caffe is a deep learning framework made with expression, speed, and modularity in mind. It is developed by the Berkeley Vision and Learning Center (BVLC) and by community contributors. Yangqing Jia created the project during his PhD at UC Berkeley." - Caffe webpage (November 2015)
"Encog is an advanced machine learning framework that supports a variety of advanced algorithms, as well as support classes to normalize and process data. Machine learning algorithms such as Support Vector Machines, Artificial Neural Networks, Genetic Programming, Bayesian Networks, Hidden Markov Models, Genetic Programming and Genetic Algorithms are supported. Most Encog training algoritms are multi-threaded and scale well to multicore hardware. Encog can also make use of a GPU to further speed processing time. A GUI based workbench is also provided to help model and train machine learning algorithms." - Encog webpage.
H2O is not strictly a package for machine learning, instead they expose an API for doing fast and scalable machine learning for smarter applications which use big data. Their API supports deep learning model, generalized boosting models, generalized linear models, and more. They also host a cool conference, checkout the videos :).
Google TensorFlow.
" TensorFlow is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) that flow between them. This flexible architecture lets you deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device without rewriting code." - GitHub repository ( November 2015)
Microsoft Distributed Machine Learning Tookit.
"DMTK includes the following projects: DMTK framework(Multiverso): The parameter server framework for distributed machine learning. LightLDA: Scalable, fast and lightweight system for large-scale topic modeling. Distributed word embedding: Distributed algorithm for word embedding. Distributed skipgram mixture: Distributed algorithm for multi-sense word embedding." - GitHub repository (November 2015)
Microsoft Azure Machine Learning.
The machine learning / predictive analytics platform in Microsoft Azure is a fully managed cloud service that enables you to easily build, deploy, and share predictive analytics solutions. This software basically allows you to drag and drop pre-built components (including machine learning models) and custom-built components which manipulate data sets into a process. This flow-chart is then compiled into a program and can be deployed as a web-service. It is similar to the older SAS enterprise miner solution except that is it more modern, more functional, supports deep learning models, and exposes clients for Python and R.
"MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to mix the flavours of symbolic programming and imperative programming together to maximize the efficiency and your productivity. In its core, a dynamic dependency scheduler that automatically parallelizes both symbolic and imperative operations on the fly. A graph optimization layer is build on top, which makes symbolic execution fast and memory efficient. The library is portable and lightweight, and is ready scales to multiple GPUs, and multiple machines." - MXNet GitHub Repository (November 2015)
"neon is Nervana's Python based Deep Learning framework and achieves the fastest performance on many common deep neural networks such as AlexNet, VGG and GoogLeNet. We have designed it with the following functionality in mind: 1) Support for commonly used models and examples: convnets, MLPs, RNNs, LSTMs, autoencoders, 2) Tight integration with nervanagpu kernels for fp16 and fp32 (benchmarks) on Maxwell GPUs, 3) Basic automatic differentiation support, 4) Framework for visualization, and 5) Swappable hardware backends . " - neon GitHub repository (November 2015)
"Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It can use GPUs and perform efficient symbolic differentiation." - Theano GitHub repository (November 2015). Theano, like TensorFlow and Torch, is more broadly applicable than just Neural Networks. It is a framework for implementing existing or creating new machine learning models using off-the-shelf data-structures and algorithms.
"Torch is a scientific computing framework with wide support for machine learning algorithms . A summary of core features include an N-dimensional array, routines for indexing, slicing, transposing, an interface to C, via LuaJIT, linear algebra routines, neural network, energy-based models, numeric optimization routines, Fast and efficient GPU support, Embeddable, with ports to iOS, Android and FPGA" - Torch Webpage (November 2015). Like Tensorflow and Theano, Torch is more broadly applicable than just Neural Networks. It is a framework for implementing existing or creating new machine learning models using off-the-shelf data-structures and algorithms.
SciKit Learn.
SciKit Learn is a very popular package for doing machine learning in Python. It is built on NumPy, SciPy, and matplotlib Open source, and exposes implementations of various machine learning models for classification, regression, clustering, dimensionality reduction, model selection, and data preprocessing.
As I mentioned, there are now hundreds of machine learning packages and frameworks out there. Before committing to any one solution I would recommend doing a best-fit analysis to see which open source or proprietary machine learning package or software best matches your use-cases. Generally speaking a good rule to follow in software engineering and model development for quantitative finance is to not reinvent the wheel . that said, for any sufficiently advanced model you should expect to have to write some of your own code.
Conclusão.
Neural networks are a class of powerful machine learning algorithms. They are based on solid statistical foundations and have been applied successfully in financial models as well as in trading strategies for many years. Despite this, they have a bad reputation due to the many unsuccessful attempts to use them in practice. In most cases, unsuccessful neural network implementations can be traced back to inappropriate neural network design decisions and general misconceptions about how they work. This article aims to articulate some of these misconceptions in the hopes that they might help individuals implementing neural networks meet with success.
For readers interested in getting more information, I have found the following books to be quite instructional when it comes to neural networks and their role in financial modelling and algorithmic trading.
Some instructional textbooks when it comes to implementing neural networks and other machine learning algorithms in finance. Many of the misconceptions presented in this article are discussed in more detail in Professor Andries Engelbrecht's book, 'An Introduction to Computational Intelligence'
Previous Story.
Simulated Annealing for Portfolio Optimization.
Next Story.
Regression analysis using Python.
Great effort behind this article, Stuart.
Kindly check the email.
Hi Michal, thank you for your email. I'm glad you enjoyed the article, please let me know if you have any suggestions for further material!
November 28, 2014.
A terrific resource.
It would be really illustrative to understand how the example applications mentioned - time-series forecasting, proprietary trading signal generation, fully automated trading (decision making), financial modelling, derivatives pricing, credit risk assessments, pattern matching, and security classification - are solved using neural networks or other machine learning methods. Is there a resource or blog that covers this?
November 28, 2014.
Hi Dinesh, thanks for commenting. I think that online literature for the topic of Neural Networks applied to finance is fragmented. Therefore, it may be worthwhile trying to get a copy a book called "Neural Networks in Finance" by Paul D. McNelis. The book is a bit dated, and probably won't cover all the latest developments in Neural Networks but it will definitely covers most of the applications I mentioned in my blog. Otherwise, the best resources are academic journal articles written on the topic. Journal articles are obviously a bit more technical but there is no better way to learn in my humble opinion. Boa sorte!
Excellent blog Stuart. well-written, articulate & nuanced in its descriptions.
Thank you very much Faiyaz. I only hope that you and other readers are able to find good applications of the techniques discussed here 🙂
Nice blog Mr Stuart, and thanks for summarizing alot of things. I was working on a neural network for my company inkunzi markets in Sandton, and just finished after 3 months(built from scratch), fuzzy neurons are not as easy to control and build indeed, but rather better when done perfectly interms of pattern recognition and market forecasting. Keep up the good work fellow Quant,
BSc Mathematical Statistics, Physics and Electronics from Rhodes University.
12 de janeiro de 2015.
Hi Brian, thanks for getting in touch. Thank you for the information, I have only read up on the neuro-fuzzy systems but never applied them in practice. I will check them out in more detail this year :).
12 de fevereiro de 2015.
Hi Stu, I am starting a quant invest platform development project here in Beijng based on big data intelligence from market emotion to technical trading signal using, and I am looking for international partner's join, if you have interests, maybe we can schedule a skype chat. Thank you with regards, your personal blog is awesome! Jack.
12 de fevereiro de 2015.
Hi Jack, thank you for the compliments :). I will definitely be in touch, Beijing is an incredible city which I was lucky enough to visit last year for a conference.
Obrigado cara. I appreciate the comment, that said this article is getting a little bit old now 🙂 so I'm busy working on a more technical follow up with implementation-level detail.
Should come out in the next few months. Obrigado novamente!
Please sign me up for updates.
My concern with neural networks is its ability to handle categorical data. I get the impression that in supervised learning situations, neural networks work best when all your independent variables are numeric (or at least mostly numeric). Is there any truth to this?
Hi Li, you can train neural networks with categorical inputs, usually each potential category forms an individual input into the neural network.
Obrigado pelo artigo. I think this article is a must read for everyone 'new' at this field. As I call this method is a 'breadth-first' learning approach to Introduction to Neural Networks.
Desculpe pelo meu inglês ruim.
Thank you for the kind words, your English is fine 🙂
Looking for something like this for a while, all i can find are click-bait articles.
Great research! Favorited!
Thanks John; I also really dislike all the mindless click-bait articles out there. This blog is all about content 🙂 - I really need to write more about neural networks though.
Thank you very very much. Your article is amazing especially for the beginner like me. From your article, I get an outline for what Neural Network is, how many kinds of NNs and how to use them properly. Plus, the external resources you provided are excellent too.
Thanks for the kind words Steven. I'm happy to hear that the article was helpful to you 🙂 good luck!
18 de setembro de 2015.
Great article Stuart. Would you recommend any open source ANN tools that implement the Levenberg Marquardt learning algorithm?
18 de setembro de 2015.
Hi Ankur. The one package I used a few years ago which offered Levenberg Marquardt (often referred to as LMA) was Encog. I'm sure some of the others offer it as well.
September 21, 2015.
Ótimo artigo. Neural network and article.
Hi Stuart, Thank you for this article - it was most illuminating!
How do spiking neural networks fit into the overall picture of neural networks? (architecturally speaking and from the point of view of most suitable applications)
Hey Louis, thanks for the comment!
That's an interesting question. Let me preface my response by stating that I have neither worked with nor explicitly studied spiking neural networks.
That said, I have come across them before. Architecturally they are similar to any other neural network except that each individual neuron's complexity is higher like with product unit neural networks - which, by the way, I quite like. This added complexity makes spiking neural networks "more similar" to biological neural networks in the sense that neuron activation is not a continuous process, it is discontinuous. Which is actually how I came across them originally :-): I was researching applications for jump diffusion stochastic processes one of which is modelling the firing rate of neurons in spiking neural networks. But like I said, I haven't worked with them or studied them explicitly and I am not one hundred perfect sure of their use cases.
All I can say us that I am supportive of complex neural network architectures because I believe they may hold the key to more efficient and human-esque intelligence in machines.
My name is Michael. I have read that Neural Network Regression can predict the market more than any other software or strategy. I have a question then; how can i use the neural network in trading, my main concern is the forex market. Is neural network regression a software? O que é isso? How can i use it in trading forex? How can it predict or forcaste the price of the eurusd for me?
Am like totally naive on this and i need your help. If its a program software, how can i get one?
Thank you and i anticipate your reply.
Wow, thanks for the excellent write-up. It was incredibly well-researched and articulated. Mantem!
21 de outubro de 2016.
I know what you mean, but there's a dichotomy with your title of "10 misconceptions. " and the fact that you listed not the 10 misconceptions but actually the conceptions anti to the ten misconceptions. The reader at first thinks that your list are the misconceptions. Double negative thing going on.
December 1, 2016.
thank you for the wonderful article, a great resource in deed.
3 de dezembro de 2016.
An Amazing article with perfect definitions and clear examples. Great heads up for someone like me, trying to develop a new ANN framework from the scratch.
December 30, 2016.
Titled as a warning against common knowledge, covered stuff that classical texts didn't. Ótimo blog! Obrigado!
Thx for great overview article ✔
Submit a Comment.
Cancelar resposta.
Follow Turing Finance.
Turing Finance Mailing List.
Friends of Turing Finance.
Quantocracy is the best quantitative finance blog aggregator with links to new analysis posted every day.
NMRQL is the quantitative hedge fund I'm a part of. We use machine learning to try and beat the market.

Redes neurais para negociação algorítmica: aprimorando estratégias clássicas.
Olá a todos! Em cinco últimos tutoriais discutimos previsão financeira com redes neurais artificiais onde comparamos arquiteturas diferentes para previsão de séries temporais financeiras, percebemos como fazer essa previsão adequadamente com préprocessamento e regularização de dados corretos, executamos nossas previsões baseadas em séries temporais multivariadas e podemos produzir realmente bons resultados para previsão de volatilidade e implementação de funções de perda personalizadas. No último, definimos e experimentamos o uso de dados de diferentes fontes e a solução de duas tarefas com rede neural única e hiperparâmetros otimizados para melhores previsões.
Hoje quero fazer uma espécie de conclusão de séries temporais financeiras com um caso de uso de previsão prática: melhoraremos uma estratégia de média móvel clássica com rede neural e mostraremos que ela realmente melhora o resultado final e analisará os novos objetivos de previsão que você mais gostaria Brincar com.
Postagens anteriores:
Você pode verificar o código para treinar a rede neural no meu Github.
Nós já vimos antes, que podemos prever valores muito diferentes - de mudanças de preço a volatilidade. Antes estávamos considerando essas previsões como algo abstrato e até tentamos negociar apenas observando essas previsões "de cima para baixo", o que não era bom. Mas também sabemos que existem muitas outras estratégias de negociação baseadas em análises técnicas e indicadores financeiros. Por exemplo, podemos construir médias móveis de janelas diferentes (uma "longa", digamos 30 dias e outra mais "curta", provavelmente 14 dias) e acreditamos que os pontos de passagem são os momentos em que a tendência muda:
Mas esta estratégia de negociação tem uma armadilha principal: nas regiões planas ainda faremos os negócios nos pontos em que nada realmente muda, então vamos perder dinheiro:
Como podemos superar isso com o uso de aprendizado de máquina?
Vamos verificar a seguinte hipótese de estratégia: nos momentos em que as médias móveis estão se cruzando, faremos a previsão de mudança de alguma característica, e se realmente esperamos um salto, acreditaremos nesse sinal de negociação. Caso contrário, vamos ignorá-lo, porque não queremos perder dinheiro em regiões planas.
Como objetivo de previsão, quero tentar a assimetria - uma medida de assimetria de uma distribuição. Vamos supor que, se prevermos uma mudança em uma distribuição, isso significará que nossa tendência atual (não apenas a região plana) mudará no futuro.
Dados de entrada.
Aqui nós usaremos pandas e PyTi para gerar mais indicadores para usá-los como entrada também. Utilizaremos MACD, Ichimocku cloud, RSI, volatilidade e outros. Todos esses valores formarão séries temporais multivariadas que serão achatadas para uso posterior no MLP ou permanecerão para CNN ou RNN.
Obtive recursos de indicadores concatenados com tuplas de OHLCV para gerar o vetor final.
Arquitetura de rede.
Aqui eu quero mostrar uma das opções de como treinar MLP regularizado para previsão de séries temporais:
O ponto “Novel” aqui está adicionando um pequeno ruído à entrada e à saída da camada única da nossa rede neural. Ele pode funcionar muito semelhante à regularização L2, explicação matemática que você pode verificar neste livro incrível.
A rede neural é treinada normalmente, vamos ver como nossas previsões de assimetria podem melhorar (ou não) a estratégia de médias móveis.
Nós treinamos nossa rede nos preços da AAPL de 2012 a 2016 e como teste em 2016-2017, como fizemos em um dos tutoriais anteriores.
Após o treinamento de uma rede, traçamos nossos preços mais próximos, movendo médias e linhas verticais em pontos de cruzamento: linhas vermelhas e laranjas representam pontos em que gostaríamos de trocar e verdes - onde melhor não. Não parece perfeito, mas vamos fazer o backtesting para julgá-lo.
Resultados sem rede neural.
Eu usei o backtesting descrito neste post, então vou fornecer apenas as principais métricas e gráficos:
(«Sharpe Ratio», «16,27»),
('Drawdown Duration', '204')]
Resultados com rede neural.
Como vamos usar apenas sinais de negociação "vermelho" e "laranja" e pular os verdes. Como podemos ver, essa estratégia fez 2 negócios a menos e nos ajudou a reduzir um pouco o primeiro rebaixamento e aumentar o retorno final quase duas vezes!
(«Sharpe Ratio», «27.99»),
('Drawdown Duration', '102')]
Possíveis melhorias.
Parece que esta ideia, pelo menos, tem algum sentido! Gostaria de apresentar algumas melhorias possíveis que eu recomendo que você experimente por conta própria:
Diferentes estratégias de indicadores: MACD, RSI Estratégias de negociação de pares podem ser otimizadas extremamente bem com a abordagem proposta Tente prever diferentes características de séries temporais: expoente de Hurst, coeficiente de autocorrelação, talvez outros momentos estatísticos.
Com este post eu gostaria de terminar (pelo menos por um tempo) tópico de previsão de séries de tempo financeiro usando redes neurais. Vamos ser honestos, definitivamente não é um Santo Graal e não podemos usá-los diretamente para prever se o preço vai subir ou descer para ganhar muito dinheiro. Consideramos diferentes fontes e objetivos de dados, tratados cuidadosamente com overparing e otimizados hyperparameters. Que conclusões podemos fazer?
Tenha cuidado com o overfitting! Você fará isso em 99% dos casos, não confie em valores como 80% de acurácia de parcelas muito bonitas - deve ser um erro Tente prever algo diferente, mas feche os preços ou retorne - volatilidade, assimetria, talvez outras características aprendizagem multimodal se você tiver fontes de dados diferentes Não se esqueça de encontrar os hyperparameters certos! Crie uma estratégia que pode ser uma mistura de alguns clássicos e baseados em aprendizado de máquina e backtest isso!
Espero que esta série de posts seja útil para alguém, voltarei em breve com os tópicos de notícias… Fique ligado! :)
Ao aplaudir mais ou menos, você pode nos indicar quais histórias realmente se destacam.
Alexandr Honchar.
Entreprene 🇮🇹 Empresário de AI, blogueiro e pesquisador. Fazer máquinas funcionar, aprender e gostar, mas os humanos criam, descobrem e amam.
Mundo de aprendizado de máquina.
O melhor sobre Aprendizado de Máquina, Visão Computacional, Aprendizado Profundo, Processamento de Linguagem Natural e outros.

Redes neurais aprendem estratégias de negociação Forex.
O mais recente buzz no mundo dos estrangeiros é redes neurais, um termo retirado da comunidade de inteligência artificial. Em termos técnicos, as redes neurais são métodos de análise de dados que consistem em um grande número de unidades de processamento que são interligadas por probabilidades ponderadas. Em termos mais simples, as redes neurais são um modelo vagamente parecido com o modo como o cérebro humano funciona e aprende. Há várias décadas, os membros da comunidade de inteligência artificial usam o modelo de rede neural na criação de computadores que "pensem". e & # 39; aprender & # 39; com base nos resultados de suas ações.
Ao contrário da estrutura de dados tradicional, as redes neurais recebem vários fluxos de dados e produzem um resultado. Se houver uma maneira de quantificar os dados, é possível adicioná-los aos fatores que estão sendo considerados ao fazer uma previsão. Eles são freqüentemente usados ​​em software de previsão de mercado Forex porque a rede pode ser treinada para interpretar dados e tirar uma conclusão a partir deles.
Antes que possam ser úteis para fazer previsões de Forex, as redes neurais precisam ser treinadas. para reconhecer e ajustar os padrões que surgem entre a entrada e a saída. O treinamento e o teste podem ser demorados, mas é o que dá às redes neurais a capacidade de prever resultados futuros com base em dados passados. A ideia básica é que, quando apresentada com exemplos de pares de dados de entrada e saída, a rede pode "aprender". as dependências e aplicar essas dependências quando apresentadas com novos dados. A partir daí, a rede pode comparar sua própria saída para ver o quão perto está de corrigir a previsão, e voltar e ajustar o peso das várias dependências até que atinja a resposta correta.
Isso requer que a rede seja treinada com dois conjuntos de dados separados & mdash; o treinamento e o conjunto de testes. Um dos pontos fortes das redes neurais é que ela pode continuar aprendendo comparando suas próprias previsões com os dados que são continuamente alimentados a ela. As redes neurais também são muito boas em combinar dados técnicos e fundamentais, criando assim o melhor dos cenários de ambos os mundos. Seu próprio poder permite que eles encontrem padrões que podem não ter sido considerados e aplicam esses padrões à previsão para obter resultados surpreendentemente precisos.
Infelizmente, essa força também pode ser uma fraqueza no uso de redes neurais para previsões de negociação. Em última análise, a saída é tão boa quanto a entrada. Eles são muito bons em correlacionar dados, mesmo quando você os alimenta com quantidades enormes. Eles são muito bons em extrair padrões de tipos amplamente diferentes de informações & mdash; mesmo quando não há padrão ou relacionamento. Sua outra grande força & mdash; a capacidade de aplicar inteligência sem emoção & mdash; afinal de contas, um computador não tem um ego & mdash; também pode se tornar uma fraqueza ao lidar com um mercado volátil. Quando um fator desconhecido é introduzido, a rede neural artificial não tem como atribuir um peso emocional a esse fator.
Existem atualmente dezenas de plataformas de negociação Forex no mercado que incorporam a teoria e a tecnologia de rede neural para “ensinar”. a rede de seu sistema e deixá-lo fazer previsões e gerar ordens de compra / venda com base nele. O importante é ter em mente que a regra mais básica da negociação Forex se aplica quando você planeja construir sua rede neural & mdash; Eduque-se e saiba o que você está fazendo. Se você está lidando com análise técnica, fundamentos, redes neurais ou suas próprias emoções, a única coisa mais importante que você pode fazer para garantir seu sucesso na negociação Forex é aprender tudo o que puder.

Redes neurais para negociação algorítmica. Previsão simples de séries temporais.
ATUALIZAÇÃO IMPORTANTE:
Esta é a primeira parte das minhas experiências na aplicação de aprendizado profundo ao financiamento, em particular ao comércio algorítmico.
Eu quero implementar o sistema de negociação do zero baseado apenas em abordagens de aprendizado profundo, então para qualquer problema que tenhamos aqui (previsão de preço, estratégia de negociação, gerenciamento de risco) usaremos diferentes variações de redes neurais artificiais (RNAs) e verificaremos o quão bem elas podem lidar com isso.
Agora pretendo 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, aprendizado de reforço Indo em direto, API de corretores, ganhando dinheiro (l̶o̶s̶i̶n̶g̶).
Eu recomendo fortemente 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 previsão de séries temporais financeiras. Nesta parte, não vamos usar nenhuma engenharia de recursos. Vamos considerar apenas o conjunto de dados históricos dos movimentos do preço do índice S & P 500. Temos informações de 1950 a 2016 sobre preços abertos, próximos, altos e baixos para todos os dias do ano e volume de negócios. Em primeiro lugar, vamos tentar apenas prever preço próximo no final do dia seguinte, em segundo lugar, vamos tentar prever retorno (preço próximo - preço aberto). Faça o download do conjunto de dados do Yahoo Finance ou deste repositório.
Problema definiton.
Consideraremos nosso problema como 1) problema de regressão (tentando prever preço exatamente próximo ou retorno no dia seguinte) 2) problema de classificação binária (o preço subirá [1; 0] ou diminuirá [0; 1]).
Para treinar NNs, vamos usar o framework Keras.
Primeiro, vamos preparar nossos dados para treinamento. Queremos prever o valor de t + 1 com base nas informações de N dias anteriores. Por exemplo, tendo preços próximos dos últimos 30 dias no mercado, queremos prever, qual será o preço amanhã, no dia 31.
Usamos primeiro 90% das séries temporais como conjunto de treinamento (consideramos como dados históricos) e duramos 10% como conjunto de testes para avaliação de modelo.
Aqui está um exemplo de carregamento, divisão em amostras de treinamento e pré-processamento de dados de entrada brutos:
Problema de regressão. MLP.
Será apenas perceptron de camada 2-escondida. Número de neurônios ocultos é escolhido empiricamente, vamos trabalhar na otimização de hiperparâmetros nas próximas seções. Entre duas camadas ocultas, adicionamos uma camada de eliminação para evitar overfitting.
O importante é Denso (1), Ativação ("linear") e "mse" na seção de compilação. Queremos uma saída que possa estar em qualquer intervalo (predizemos valor real) e nossa função de perda é definida como erro quadrático médio.
Vejamos o que acontece se apenas passarmos pedaços de 20 dias para fechar preços e prever preço no 21º dia. MSE final = 46,3635263557, mas não é uma informação muito representativa. Abaixo está o gráfico das 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 próximo por valor, mas pode aprender a tendência.
Vamos escalar nossos dados usando o método preprocessing. scale () de sklearn para termos a média zero e a variação de unidade da série temporal e treinar o mesmo MLP. Agora temos MSE = 0,0040424330518 (mas é em dados escalados). No gráfico abaixo, você pode ver as séries temporais reais escalonadas (preto) e nossa previsão (azul) para ele:
Para usar este modelo no mundo real, devemos voltar para as séries temporais sem escala. Podemos fazê-lo, multiplicando ou predizendo por desvio padrão de séries temporais que usamos para fazer previsões (20 etapas de tempo não escalonadas) e adicionando seu valor médio:
MSE neste caso é igual a 937.963649937. Aqui está o gráfico de previsões restauradas (vermelho) e dados reais (verde):
Não é ruim, 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 convolucionais, você pode conferir esses recursos incríveis:
Vamos definir uma rede neural convolucional de duas camadas (combinação de camadas de convolução e de agrupamento máximo) com uma camada totalmente conectada e a mesma saída anterior:
Vamos verificar os resultados. MSEs para dados escalados e restaurados são: 0.227074542433; 935.520550172. As parcelas estão abaixo:
Mesmo olhando no MSE em dados escalonados, esta rede aprendeu muito pior. Muito provavelmente, a arquitetura mais profunda precisa de mais dados para treinamento ou é super adaptada devido ao número muito alto de filtros ou camadas. Vamos considerar esse problema mais tarde.
Problema de regressão. RNN
Como arquitetura recorrente, eu quero usar duas camadas LSTM empilhadas (leia mais sobre LSTMs aqui).
As parcelas das previsões estão abaixo, MSEs = 0,0246238639582; 939.948636707.
A previsão de RNN parece mais com o modelo de média móvel, não pode aprender e prever todas as flutuações.
Então, é um resultado um pouco imprevisível, mas podemos ver que os MLPs funcionam melhor para essa previsão de séries temporais. Vamos verificar o que acontecerá se mudarmos da regressão para o problema de classificação. Agora, usaremos preços não próximos, mas retorno diário (preço de fechamento de preço fechado) e queremos prever se o preço de fechamento é maior ou menor do que o preço de abertura com base nos retornos dos últimos 20 dias.
Problema de classificação. MLP.
O código é alterado apenas um pouco - nós mudamos nossa última camada Densa para ter saída [0; 1] ou [1; 0] e adicione a saída softmax para esperar uma saída probabilística.
Para carregar saídas binárias, altere a seguinte linha de código:
Também mudamos a função de perda para entropia cruzada binária e adicionamos métricas de precisão.
Ah, não é melhor do que adivinhar aleatoriamente (50% de precisão), vamos tentar algo melhor. Confira os resultados abaixo.
Problema de classificação. CNN.
Problema de classificação. RNN
Conclusões
Podemos ver, que tratar a previsão de séries temporais financeiras como o problema de regressão é melhor abordagem, pode aprender a tendência e os preços próximos do real.
O que foi surpreendente para mim é que os MLPs estão tratando melhor os dados de sequência como CNNs ou RNNs, que devem funcionar melhor com séries temporais. Eu explico com um conjunto de dados muito pequeno (
16k time stamps) e hiperparâmetros dummy.
Você pode reproduzir resultados e melhorar usando código do repositório.
Acho que podemos obter melhores resultados tanto na regressão quanto na classificação usando diferentes características (não apenas séries temporais escalonadas) como alguns indicadores técnicos, volume de vendas. Além disso, podemos experimentar dados mais frequentes, digamos, pulsos minuto a minuto para ter mais dados de treinamento. Todas essas coisas eu vou fazer depois, fique atento :)
Ao aplaudir mais ou menos, você pode nos indicar quais histórias realmente se destacam.
Alexandr Honchar.
Entreprene 🇮🇹 Empresário de AI, blogueiro e pesquisador. Fazer máquinas funcionar, aprender e gostar, mas os humanos criam, descobrem e amam.
Mundo de aprendizado de máquina.
O melhor sobre Aprendizado de Máquina, Visão Computacional, Aprendizado Profundo, Processamento de Linguagem Natural e outros.

Comments

Popular posts from this blog

Cobertura segura de forex

A importância da negociação forex

Estratégia de opções de decaimento de teta