SISTEMAS DE NEGOCIAÇÃO.
Criando um sistema comercial usando redes neurais.
O aprendizado de máquina se tornou incrivelmente popular durante a última década, com o advento de melhores algoritmos e poder computacional suficiente para enfrentar até mesmo os problemas mais exigentes. Hoje os algoritmos de aprendizado de máquina resolvem problemas em muitas áreas onde relações complexas entre variáveis são apresentadas e isso torna a aprendizagem de máquina uma ferramenta potencialmente viável para a criação de estratégias de negociação. Mas como podemos criar um sistema de negociação usando esse tipo de tecnologia? Neste artigo, vamos aprender como usar um algoritmo básico de aprendizado de máquina & ndash; chamado de rede neural & ndash; para criar um sistema de negociação simples no EUR / USD.
Todos os fragmentos de codificação são amostras retiradas da nossa estrutura de programação F4, disponível na Asirikuy. A biblioteca Shark de código aberto é usada para a criação e treinamento dos algoritmos de aprendizado de máquina. No entanto, as ideias gerais e as noções algorítmicas apresentadas neste artigo podem ser traduzidas para outras bibliotecas e linguagens de programação.
O que é uma rede neural?
Uma rede neural é um tipo de algoritmo de aprendizado de máquina. A rede neural clássica mais simples é composta de uma camada de entrada, uma camada oculta e uma camada de saída, onde cada camada contém um determinado número de "neurônios". Cada neurônio na camada de entrada obtém um valor, processa-o usando uma função e o passa para um ou vários neurônios na camada oculta com um determinado conjunto de pesos, os neurônios repetem o processo e passam os valores para um ou vários neurônios de saída . Em essência, a rede neural usa alguns valores de entrada e fornece alguns valores de saída processando as entradas por meio de sua estrutura funcional. Neurônios não são nada além de unidades funcionais de processamento que passam valores multiplicados por certos pesos para outras unidades.
Redes Neurais: Previsão de Lucros.
As redes neurais são algoritmos treináveis de última geração que emulam certos aspectos importantes no funcionamento do cérebro humano. Isso dá a eles uma capacidade de treinamento autônomo, a capacidade de formalizar informações não confidenciais e, mais importante, a capacidade de fazer previsões com base nas informações históricas que têm à sua disposição.
As redes neurais têm sido usadas cada vez mais em uma variedade de aplicações de negócios, incluindo soluções de previsão e pesquisa de marketing. Em algumas áreas, como detecção de fraudes ou avaliação de riscos, elas são líderes indiscutíveis. Os principais campos em que as redes neurais encontraram aplicação são operações financeiras, planejamento empresarial, comércio, análise de negócios e manutenção de produtos. As redes neurais podem ser aplicadas de forma vantajosa por todos os tipos de traders, então se você é um trader e ainda não foi apresentado a redes neurais, nós o levaremos através deste método de análise técnica e mostraremos como aplicá-lo a seu estilo de negociação.
Use Redes Neurais para Descobrir Oportunidades.
Assim como qualquer tipo de ótimo produto ou tecnologia, as redes neurais começaram a atrair todos aqueles que estão procurando um mercado promissor. Torrents de anúncios sobre softwares da próxima geração inundaram o mercado - anúncios que celebram o mais poderoso de todos os algoritmos de redes neurais já criados. Mesmo nos raros casos em que as declarações de propaganda se assemelham à verdade, tenha em mente que um aumento de 10% na eficiência é provavelmente o máximo que você obterá de uma rede neural. Em outras palavras, ele não produz retornos miraculosos e independentemente de quão bem ele funciona em uma situação particular, haverá alguns conjuntos de dados e classes de tarefas para os quais os algoritmos usados anteriormente permanecem superiores. Lembre-se disso: não é o algoritmo que faz o truque. Informações de entrada bem preparadas sobre o indicador alvo são o componente mais importante do seu sucesso com redes neurais.
Convergência mais rápida é melhor?
Muitos daqueles que já usam redes neurais acreditam erroneamente que quanto mais rápido sua rede fornece resultados, melhor é. Isso, no entanto, é uma ilusão. Uma boa rede não é determinada pela taxa na qual ela produz resultados e os usuários devem aprender a encontrar o melhor equilíbrio entre a velocidade na qual a rede treina e a qualidade dos resultados que ela produz.
Aplicação correta de redes neurais.
Muitos traders aplicam redes neurais incorretamente porque depositam muita confiança no software que usam, sem ter recebido instruções adequadas sobre como usá-lo corretamente. Para usar uma rede neural do jeito certo e, assim, de forma vantajosa, um comerciante deve prestar atenção a todas as etapas do ciclo de preparação da rede. É o comerciante e não a sua rede que é responsável por inventar uma ideia, formalizar essa ideia, testá-la e aperfeiçoá-la e, finalmente, escolher o momento certo para descartá-la quando ela não for mais útil. Vamos considerar as etapas desse processo crucial em mais detalhes:
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:
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 o 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 o 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 está nem perto 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 pool máximo) com uma camada totalmente conectada e a mesma saída 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.
Estratégias de negociação usando 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 (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 ambos os 4 e TradeStation será mostrado, e será demonstrado que os resultados de 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 um filtro comercial 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 das 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 no final do dia podem minimizar o impacto da abertura de lacunas.
Como o objetivo é construir uma estratégia forex, 4 (4) é uma escolha óbvia para a plataforma de negociação, uma vez que 4 é projetado principalmente para forex e é amplamente usado para negociar esses mercados (vide, por exemplo, TradeStation: A Language Comparação). 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 luidez 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 como indicado pelo intervalo de datas mostrado na Fig. 1 (série de dados # 2), então o mesmo intervalo de datas foi usado para obter a 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 para 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 criar uma estratégia de forex para 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 em 4 do que na TradeStation devem ser eliminados da compilação, o que significa que os seguintes indicadores devem ser evitados:
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, realizamos nossas previsões baseadas em séries temporais multivariadas e poderíamos 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, tracei 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! :)
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 (geralmente 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 de 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.
Eu tenho que confessar que a minha busca para melhorar as estratégias de negociação de rede neural 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 back-teste (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 esses 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 pelas quais eu poderia limitar a exposição desses sistemas no mercado, fazendo com que eles negociassem menos e percebesse que a solução para meus problemas estava à 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ões em uma única estratégia: o que agora gosto de chamar de “AsirikuyBrain”. 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 lucratividade geral é a mais alta entre todos os sistemas e o rebaixamento é o mais baixo, o que significa que o AsirikuyBrain alcança uma taxa média de Retorno Anualizado ao Máximo Abatimento que é maior do que qualquer um dos technos de negociação individuais utilizados, 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 as estratégias de rede neural e como você também pode construir constantemente os sistemas NN usando FANN que podem ser executados no 4/5 / JForex ou na API REST Oanda, por favor considere juntar-se ao Asirikuy, um site repleto de vídeos educacionais. , 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)
US Search Desktop.
Agradecemos seus comentários sobre como melhorar a Pesquisa do Yahoo. Este fórum é para você fazer sugestões de produtos e fornecer feedback atencioso. Estamos sempre tentando melhorar nossos produtos e podemos usar o feedback mais popular para fazer uma mudança positiva!
Se você precisar de assistência de qualquer tipo, visite nosso fórum de suporte à comunidade ou encontre ajuda individualizada em nosso site de ajuda. Este fórum não é monitorado por nenhum problema relacionado a suporte.
O fórum de comentários do produto do Yahoo agora exige um ID e uma senha válidos do Yahoo para participar.
Agora você precisa fazer login usando sua conta de e-mail do Yahoo para nos fornecer feedback e enviar votos e comentários para as ideias existentes. Se você não tiver um ID do Yahoo ou a senha do seu ID do Yahoo, inscreva-se para obter uma nova conta.
Se você tiver um ID e uma senha válidos do Yahoo, siga estas etapas se quiser remover suas postagens, comentários, votos e / ou perfil do fórum de comentários do produto do Yahoo.
Vote em uma ideia existente () ou publique uma nova ideia…
Idéias quentes Idéias superiores Novas ideias Categoria Status Meu feedback.
Xnxx vedios.
Trazer de volta o layout antigo com pesquisa de imagens.
sim: a única possibilidade (eu acho) enviar todas as informações para (alienvault.
Desinformação na ordem DVD.
Eu pedi DVD / Blueray "AL. A confidencial" tudo que eu consegui foi Blue ray & amp; um contato # para obter o DVD que não funcionou. Eu encomendo minha semana com Marilyn ____DVD / blue ray & amp; Eu peguei os dois - tolamente, assumi que o mesmo se aplicaria a L. A.___ETC não. Eu não tenho uma máquina de raio azul ----- Eu não quero uma máquina de raio azul Eu não quero filmes blueray. Como obtenho minha cópia de DVD de L. A. Confidential?
yahoo, pare de bloquear email.
Passados vários meses agora, o Yahoo tem bloqueado um servidor que pára nosso e-mail.
O Yahoo foi contatado pelo dono do servidor e o Yahoo alegou que ele não bloquearia o servidor, mas ainda está sendo bloqueado. CEASE & amp; DESISTIR.
Não consigo usar os idiomas ingleses no e-mail do Yahoo.
Por favor, me dê a sugestão sobre isso.
Motor de busca no Yahoo Finance.
Um conteúdo que está no Yahoo Finance não aparece nos resultados de pesquisa do Yahoo ao pesquisar por título / título da matéria.
Existe uma razão para isso, ou uma maneira de reindexar?
Procure por "turkey ******" imagens sem ser avisado de conteúdo adulto ou que o mostre.
O Yahoo está tão empenhado em atender os gostos lascivos das pessoas que nem posso procurar imagens de uma marca de "peitos de peru" sem ser avisado sobre conteúdo adulto? Apenas usar a palavra "******" em QUALQUER contexto significa que provavelmente vou pegar seios humanos em toda a página e ter que ser avisado - e passar por etapas para evitá-lo?
Aqui está minha sugestão Yahoo:
Invente um programa de computador que reconheça palavras como 'câncer' ou 'peru' ou 'galinha' em uma frase que inclua a palavra '******' e não assuma automaticamente que a digitação "***** * "significa que estou procurando por ***********.
Descobrir uma maneira de fazer com que as pessoas que ESTÃO procurando *********** busquem ativamente por si mesmas, sem assumir que o resto de nós deve querer ************************************************ uma palavra comum - ****** - que qualquer um pode ver qualquer dia em qualquer seção de carne em qualquer supermercado em todo o país. :(
O Yahoo está tão empenhado em atender os gostos lascivos das pessoas que nem posso procurar imagens de uma marca de "peitos de peru" sem ser avisado sobre conteúdo adulto? Apenas usar a palavra "******" em QUALQUER contexto significa que provavelmente vou pegar seios humanos em toda a página e ter que ser avisado - e passar por etapas para evitá-lo?
Aqui está minha sugestão Yahoo:
Invente um programa de computador que reconheça palavras como 'câncer' ou 'peru' ou 'galinha' em uma frase que inclua a palavra '******' e não assuma automaticamente que a digitação "***** * "significa que estou procurando por mais ...
Por que, quando eu faço login no YahooGroups, todos os grupos aparecem em francês ?!
Quando entro no YahooGroups e ligo para um grupo, de repente tudo começa a aparecer em francês? O que diabos está acontecendo lá ?! Por alguma razão, o sistema está automaticamente me transferindo para o fr. groups. yahoo. Alguma ideia?
consertar o que está quebrado.
Eu não deveria ter que concordar com coisas que eu não concordo com a fim de dizer o que eu acho - eu não tive nenhum problema resolvido desde que comecei a usar o Yahoo - fui forçado a jogar meu antigo mensageiro, trocar senhas, obter novas messenger, disse para usar o meu número de telefone para alertar as pessoas que era o meu código de segurança, receber mensagens diárias sobre o bloqueio de yahoo tentativas de uso (por mim) para quem sabe por que como ele não faz e agora eu obter a nova política aparecer em cada turno - as empresas costumam pagar muito caro pela demografia que os usuários fornecem para você, sem custo, pois não sabem o que você está fazendo - está lá, mas não está bem escrito - e ninguém pode responder a menos que concordem com a política. Já é ruim o suficiente você empilhar o baralho, mas depois não fornece nenhuma opção de lidar com ele - o velho era bom o suficiente - todas essas mudanças para o pod de maré comendo mofos não corta - vou relutantemente estar ativamente olhando - estou cansado do mudanças em cada turno e mesmo aqueles que não funcionam direito, eu posso apreciar o seu negócio, mas o Ameri O homem de negócios pode vender-nos ao licitante mais alto por muito tempo - desejo-lhe boa sorte com sua nova safra de guppies - tente fazer algo realmente construtivo para aqueles a quem você serve - a cauda está abanando o cachorro novamente - isso é como um replay de Washington d c
Eu não deveria ter que concordar com coisas que eu não concordo com a fim de dizer o que eu acho - eu não tive nenhum problema resolvido desde que comecei a usar o Yahoo - fui forçado a jogar meu antigo mensageiro, trocar senhas, obter novas messenger, disse para usar o meu número de telefone para alertar as pessoas que era o meu código de segurança, receber mensagens diárias sobre o bloqueio de yahoo tentativas de uso (por mim) para quem sabe por que isso acontece e agora eu recebo a nova política em cada turno - as empresas costumam pagar muito pela demografia que os usuários fornecem para você ... mais.
Melhores estratégias 4: Machine Learning.
Deep Blue foi o primeiro computador que ganhou um campeonato mundial de xadrez. Isso foi em 1996, e levou 20 anos até que outro programa, AlphaGo, pudesse derrotar o melhor jogador de Go humano. O Deep Blue era um sistema baseado em modelos com regras de xadrez hardwired. O AlphaGo é um sistema de mineração de dados, uma rede neural profunda treinada com milhares de jogos Go. Não melhorou hardware, mas um avanço no software foi essencial para a etapa de bater os melhores jogadores de xadrez para bater os melhores jogadores de Go.
Nesta quarta parte da minissérie, analisaremos a abordagem de mineração de dados para o desenvolvimento de estratégias de negociação. Este método não se preocupa com os mecanismos de mercado. Ele apenas verifica curvas de preços ou outras fontes de dados para padrões preditivos. Aprendizado de máquina ou & # 8220; Inteligência Artificial & # 8221; nem sempre está envolvido em estratégias de mineração de dados. Na verdade, o mais popular # 8211; e surpreendentemente rentável & # 8211; O método de mineração de dados funciona sem nenhuma rede neural sofisticada ou máquina de vetores de suporte.
Princípios de aprendizado de máquina.
Um algoritmo de aprendizagem é alimentado com amostras de dados, normalmente derivadas de algum modo dos preços históricos. Cada amostra consiste em n variáveis x 1 .. x n, comumente chamadas de preditores, recursos, sinais ou simplesmente input. Esses preditores podem ser os retornos de preço das últimas n barras, ou uma coleção de indicadores clássicos, ou quaisquer outras funções imagináveis da curva de preço (eu mesmo vi os pixels de uma imagem de gráfico de preços usados como preditores de um gráfico neural). rede!). Cada amostra também inclui normalmente uma variável-alvo y, como o retorno da transação seguinte após a amostra, ou o próximo movimento de preço. Na literatura você pode encontrar y também chamado rótulo ou objetivo. Em um processo de treinamento, o algoritmo aprende a predizer o alvo y a partir dos preditores x 1 .. x n. A memória erudita & # 8216; & # 8217; é armazenado em uma estrutura de dados denominada model que é específica para o algoritmo (não confundir com um modelo financeiro para estratégias baseadas em modelos!). Um modelo de aprendizado de máquina pode ser uma função com regras de predição no código C, geradas pelo processo de treinamento. Ou pode ser um conjunto de pesos de conexão de uma rede neural.
Os preditores, recursos ou o que quer que você os chame, devem conter informações suficientes para prever a meta com alguma precisão. Eles também geralmente cumprem dois requisitos formais. Primeiro, todos os valores de previsão devem estar no mesmo intervalo, como -1 .. +1 (para a maioria dos algoritmos R) ou -100 .. +100 (para algoritmos Zorro ou TSSB). Então você precisa normalizá-los de alguma forma antes de enviá-los para a máquina. Em segundo lugar, as amostras devem ser equilibradas, isto é, igualmente distribuídas por todos os valores da variável alvo. Portanto, deve haver tantos vencendo quanto perdendo amostras. Se você não observar esses dois requisitos, ficará imaginando por que está obtendo resultados ruins com o algoritmo de aprendizado de máquina.
Algoritmos de regressão predizem um valor numérico, como a magnitude e o sinal do próximo movimento de preço. Algoritmos de classificação preveem uma classe de amostra qualitativa, por exemplo, se ela está precedendo uma vitória ou uma perda. Alguns algoritmos, como redes neurais, árvores de decisão ou máquinas de vetores de suporte, podem ser executados em ambos os modos.
Alguns algoritmos aprendem a dividir amostras em classes sem precisar de nenhum destino. Isso é aprendizagem não supervisionada, ao contrário da aprendizagem supervisionada usando um alvo. Em algum lugar entre os dois está o aprendizado por reforço, em que o sistema se treina executando simulações com os recursos dados e usando o resultado como alvo de treinamento. AlphaZero, o sucessor do AlphaGo, usou o aprendizado por reforço ao jogar milhões de jogos Go contra si próprio. Em finanças, há poucas aplicações para aprendizado não supervisionado ou de reforço. 99% das estratégias de aprendizado de máquina usam o aprendizado supervisionado.
Seja qual for o sinal que estamos usando para os preditores em finanças, eles provavelmente conterão muito ruído e pouca informação, e serão não-estacionários em cima dele. Portanto, a previsão financeira é uma das tarefas mais difíceis no aprendizado de máquina. Algoritmos mais complexos não atingem necessariamente melhores resultados. A seleção dos preditores é fundamental para o sucesso. Não é uma boa ideia usar muitos preditores, pois isso simplesmente causa overfitting e falha na operação de amostra. Portanto, as estratégias de mineração de dados geralmente aplicam um algoritmo de pré-seleção que determina um pequeno número de preditores de um conjunto de muitos. A pré-seleção pode se basear na correlação entre preditores, no significado, no conteúdo da informação ou simplesmente no sucesso da previsão com um conjunto de testes. Experimentos práticos com seleção de recursos podem ser encontrados em um artigo recente no blog Robot Wealth.
Aqui está uma lista dos métodos mais populares de mineração de dados usados em finanças.
1. Sopa indicadora.
A maioria dos sistemas de negociação que estamos programando para clientes não é baseada em um modelo financeiro. O cliente queria apenas sinais comerciais de determinados indicadores técnicos, filtrados com outros indicadores técnicos em combinação com indicadores mais técnicos. Quando perguntado como essa miscelânea de indicadores poderia ser uma estratégia lucrativa, ele normalmente respondia: "Confie em mim." Eu estou trocando isso manualmente, e isso funciona. & # 8221;
Isso de fato. Pelo menos às vezes. Embora a maioria desses sistemas não tenham passado no teste WFA (e alguns nem mesmo um simples backtest), um número surpreendentemente grande foi o que aconteceu. E esses também eram frequentemente lucrativos em negociações reais. O cliente tinha sistematicamente experimentado indicadores técnicos até encontrar uma combinação que funcionasse na negociação ao vivo com certos ativos. Essa forma de análise técnica de tentativa e erro é uma abordagem clássica de mineração de dados, executada apenas por um ser humano e não por uma máquina. Eu não posso realmente recomendar este método & # 8211; e muita sorte, para não falar de dinheiro, está provavelmente envolvida & # 8211; mas posso testemunhar que às vezes leva a sistemas lucrativos.
2. Padrões de vela.
Não deve ser confundido com aqueles Padrões Japoneses de Vela que tiveram seu melhor encontro antes, há muito tempo. O equivalente moderno é a negociação de ações de preço. Você ainda está olhando para as velas abertas, altas, baixas e fechadas. Você ainda está esperando encontrar um padrão que preveja uma direção de preço. Mas agora você está analisando as curvas de preços contemporâneas para coletar esses padrões. Existem pacotes de software para esse fim. Eles pesquisam padrões que são lucrativos por algum critério definido pelo usuário e os utilizam para criar uma função específica de detecção de padrões. Poderia se parecer com este (do analisador de padrões do Zorro):
Esta função C retorna 1 quando os sinais correspondem a um dos padrões, caso contrário, 0. Você pode ver no longo código que essa não é a maneira mais rápida de detectar padrões. Um método melhor, usado pelo Zorro quando a função de detecção não precisa ser exportada, está classificando os sinais pela sua magnitude e verificando a ordem de classificação. Um exemplo de tal sistema pode ser encontrado aqui.
O preço da negociação de ações realmente funciona? Assim como a sopa indicadora, ela não é baseada em nenhum modelo financeiro racional. Pode-se imaginar, na melhor das hipóteses, que sequências de movimentos de preços fazem com que os participantes do mercado reajam de uma determinada maneira, estabelecendo assim um padrão preditivo temporário. No entanto, o número de padrões é bastante limitado quando você olha apenas sequências de algumas velas adjacentes. O próximo passo é comparar velas que não são adjacentes, mas arbitrariamente selecionadas dentro de um período de tempo mais longo. Dessa forma, você está obtendo um número quase ilimitado de padrões & # 8211; mas ao custo de finalmente deixar o reino do racional. É difícil imaginar como um movimento de preços pode ser previsto por alguns padrões de velas de semanas atrás.
Ainda assim, muito esforço está sendo feito. Um colega blogueiro, Daniel Fernandez, administra um site de assinatura (Asirikuy) especializado em padrões de velas de mineração de dados. Ele refinou o padrão de negociação até os menores detalhes, e se alguém conseguisse algum lucro dessa maneira, seria ele. Mas para seus assinantes & # 8217; decepção, trocando seus padrões ao vivo (QuriQuant) produziu resultados muito diferentes dos seus maravilhosos backtests. Se realmente existem sistemas de ações lucrativas, aparentemente ninguém os encontrou ainda.
3. Regressão linear
A base simples de muitos algoritmos complexos de aprendizado de máquina: Preveja a variável de destino y por uma combinação linear dos preditores x 1 .. x n.
Os coeficientes a n são o modelo. Eles são calculados para minimizar a soma das diferenças quadráticas entre os valores verdadeiros de y das amostras de treinamento e seus y previstos da fórmula acima:
Para amostras distribuídas normais, a minimização é possível com alguma aritmética matricial, portanto não são necessárias iterações. No caso n = 1 & # 8211; com apenas uma variável preditora x & # 8211; a fórmula de regressão é reduzida para.
que é a regressão linear simples, em oposição à regressão linear multivariada em que n & gt; 1 Regressão linear simples está disponível na maioria das plataformas de negociação, f. i. com o indicador LinReg no TA-Lib. Com y = preço e x = tempo, ele é frequentemente usado como alternativa a uma média móvel. A regressão linear multivariada está disponível na plataforma R através da função lm (..) que acompanha a instalação padrão. Uma variante é a regressão polinomial. Como a regressão simples, ele usa apenas uma variável preditora x, mas também seu quadrado e graus mais altos, de modo que x n == x n:
Com n = 2 ou n = 3, a regressão polinomial é freqüentemente usada para prever o próximo preço médio dos preços suavizados das últimas barras. A função polyfit do MatLab, R, Zorro e muitas outras plataformas podem ser usadas para a regressão polinomial.
4. Perceptron.
Muitas vezes referida como uma rede neural com apenas um neurônio. De fato, um perceptron é uma função de regressão como acima, mas com um resultado binário, chamado de regressão logística. Não é a regressão, é um algoritmo de classificação. A função de aviso do Zorro (PERCEPTRON, & # 8230;) gera o código C que retorna 100 ou -100, dependendo se o resultado previsto está acima de um limite ou não:
Você pode ver que a matriz de caracteres é equivalente aos recursos x n na fórmula de regressão e os fatores numéricos são os coeficientes a n.
5. Redes nacionais.
A regressão linear ou logística só pode resolver problemas lineares. Muitos não se enquadram nesta categoria & # 8211; Um exemplo famoso é prever a saída de uma função XOR simples. E provavelmente também prevê preços ou retornos comerciais. Uma rede neural artificial (RNA) pode lidar com problemas não-lineares. É um monte de perceptrons que estão conectados em uma matriz de camadas. Qualquer perceptron é um neurônio da rede. Sua saída vai para as entradas de todos os neurônios da próxima camada, assim:
Como o perceptron, uma rede neural também aprende determinando os coeficientes que minimizam o erro entre a previsão da amostra e o alvo da amostra. Mas isso requer agora um processo de aproximação, normalmente com retropropagação do erro da saída para as entradas, otimizando os pesos em seu caminho. Este processo impõe duas restrições. Primeiro, as saídas dos neurônios devem agora ser funções continuamente diferenciáveis, em vez do simples limiar do perceptron. Em segundo lugar, a rede não deve ser muito profunda & # 8211; não deve ter muitas & # 8216; camadas ocultas & # 8217; de neurônios entre entradas e saídas. Essa segunda restrição limita a complexidade dos problemas que uma rede neural padrão pode resolver.
Ao usar uma rede neural para prever negociações, você tem muitos parâmetros com os quais você pode brincar e, se você não for cuidadoso, produzirá um grande viés de seleção:
Número de camadas ocultas Número de neurônios por camada oculta Número de ciclos de retropropagação, épocas nomeadas Taxa de aprendizado, a largura do passo de uma época Momentum, um fator de inércia para a adaptação de pesos Função de ativação.
A função de ativação emula o limiar do perceptron. Para a retropropagação você precisa de uma função continuamente diferenciável que gere um & # 8216; soft & # 8217; passo em um determinado valor x. Normalmente, uma função sigmoid, tanh ou softmax é usada. Às vezes, também é uma função linear que apenas retorna a soma ponderada de todas as entradas. Neste caso, a rede pode ser usada para regressão, para prever um valor numérico em vez de um resultado binário.
As redes neurais estão disponíveis na instalação padrão R (nnet, uma única rede de camada oculta) e em muitos pacotes, por exemplo, RSNNS e FCNN4R.
6. Aprendizagem profunda.
Os métodos de aprendizagem profunda usam redes neurais com muitas camadas ocultas e milhares de neurônios, que não poderiam ser efetivamente treinados pela retropropagação convencional. Vários métodos tornaram-se populares nos últimos anos para o treinamento de redes tão grandes. Eles costumam pré-treinar as camadas de neurônios ocultos para alcançar um processo de aprendizado mais efetivo. Uma máquina restrita de Boltzmann (RBM) é um algoritmo de classificação não supervisionado com uma estrutura de rede especial que não tem conexões entre os neurônios ocultos. Um Autoencoder Escasso (SAE) usa uma estrutura de rede convencional, mas pré-treina as camadas ocultas de maneira inteligente, reproduzindo os sinais de entrada nas saídas da camada com o mínimo possível de conexões ativas. Esses métodos permitem redes muito complexas para lidar com tarefas de aprendizagem muito complexas. Tal como bater o melhor jogador humano do mundo.
Redes de aprendizagem profunda estão disponíveis nos pacotes R deep e darch. A Deepnet fornece um autoencoder, Darch uma máquina Boltzmann restrita. Eu ainda não experimentei o Darch, mas aqui está um exemplo do script R usando o autoencoder do Deepnet com 3 camadas ocultas para sinais de negociação através da função neural () do Zorro:
7. Máquinas de vetores de suporte.
Como uma rede neural, uma máquina de vetores de suporte (SVM) é outra extensão da regressão linear. Quando olhamos novamente para a fórmula de regressão,
podemos interpretar os recursos x n como coordenadas de um espaço de recurso n-dimensional. Definir a variável de destino y como um valor fixo determina um plano nesse espaço, chamado de hiperplano, pois possui mais de duas dimensões (na verdade, n-1). O hiperplano separa as amostras com y & gt; o das amostras com y & lt; 0 The a n coefficients can be calculated in a way that the distances of the plane to the nearest samples – which are called the ‘support vectors’ of the plane, hence the algorithm name – is maximum. This way we have a binary classifier with optimal separation of winning and losing samples.
The problem: normally those samples are not linearly separable – they are scattered around irregularly in the feature space. No flat plane can be squeezed between winners and losers. If it could, we had simpler methods to calculate that plane, f. i. linear discriminant analysis . But for the common case we need the SVM trick: Adding more dimensions to the feature space. For this the SVM algorithm produces more features with a kernel function that combines any two existing predictors to a new feature. This is analogous to the step above from the simple regression to polynomial regression, where also more features are added by taking the sole predictor to the n-th power. The more dimensions you add, the easier it is to separate the samples with a flat hyperplane. This plane is then transformed back to the original n-dimensional space, getting wrinkled and crumpled on the way. By clever selecting the kernel function, the process can be performed without actually computing the transformation.
Like neural networks, SVMs can be used not only for classification, but also for regression. They also offer some parameters for optimizing and possibly overfitting the prediction process:
Kernel function. You normally use a RBF kernel (radial basis function, a symmetric kernel), but you also have the choice of other kernels, such as sigmoid, polynomial, and linear. Gamma, the width of the RBF kernel Cost parameter C, the ‘penalty’ for wrong classifications in the training samples.
An often used SVM is the libsvm library. It’s also available in R in the e1071 package. In the next and final part of this series I plan to describe a trading strategy using this SVM.
8. K-Nearest neighbor.
Compared with the heavy ANN and SVM stuff, that’s a nice simple algorithm with a unue property: It needs no training. So the samples are the model. You could use this algorithm for a trading system that learns permanently by simply adding more and more samples. The nearest neighbor algorithm computes the distances in feature space from the current feature values to the k nearest samples. A distance in n-dimensional space between two feature sets (x 1 .. x n ) and (y 1 .. y n ) is calculated just as in 2 dimensions:
The algorithm simply predicts the target from the average of the k target variables of the nearest samples, weighted by their inverse distances. Pode ser usado para classificação, bem como para regressão. Software tricks borrowed from computer graphics, such as an adaptive binary tree (ABT), can make the nearest neighbor search pretty fast. In my past life as computer game programmer, we used such methods in games for tasks like self-learning enemy intelligence. You can call the knn function in R for nearest neighbor prediction – or write a simple function in C for that purpose.
This is an approximation algorithm for unsupervised classification. It has some similarity, not only its name, to k-nearest neighbor. For classifying the samples, the algorithm first places k random points in the feature space. Then it assigns to any of those points all the samples with the smallest distances to it. The point is then moved to the mean of these nearest samples. This will generate a new samples assignment, since some samples are now closer to another point. The process is repeated until the assignment does not change anymore by moving the points, i. e. each point lies exactly at the mean of its nearest samples. We now have k classes of samples, each in the neighborhood of one of the k points.
This simple algorithm can produce surprisingly good results. In R, the kmeans function does the trick. An example of the k-means algorithm for classifying candle patterns can be found here: Unsupervised candlestick classification for fun and profit.
10. Naive Bayes.
This algorithm uses Bayes’ Theorem for classifying samples of non-numeric features (i. e. events ), such as the above mentioned candle patterns . Suppose that an event X (for instance, that the Open of the previous bar is below the Open of the current bar) appears in 80% of all winning samples. What is then the probability that a sample is winning when it contains event X ? It’s not 0.8 as you might think. The probability can be calculated with Bayes’ Theorem:
P(Y|X) is the probability that event Y (f. i. winning) occurs in all samples containing event X (in our example, Open(1) < Open(0) ). According to the formula, it is equal to the probability of X occurring in all winning samples (here, 0.8), multiplied by the probability of Y in all samples (around 0.5 when you were following my above advice of balanced samples) and divided by the probability of X in all samples.
If we are naive and assume that all events X are independent of each other, we can calculate the overall probability that a sample is winning by simply multiplying the probabilities P (X|winning) for every event X . This way we end up with this formula:
with a scaling factor s . For the formula to work, the features should be selected in a way that they are as independent as possible, which imposes an obstacle for using Naive Bayes in trading. For instance, the two events Close(1) < Close(0) and Open(1) < Open(0) are most likely not independent of each other. Numerical predictors can be converted to events by dividing the number into separate ranges.
The Naive Bayes algorithm is available in the ubuitous e1071 R package.
11. Decision and regression trees.
Those trees predict an outcome or a numeric value based on a series of yes/no decisions, in a structure like the branches of a tree. Any decision is either the presence of an event or not (in case of non-numerical features) or a comparison of a feature value with a fixed threshold. A typical tree function, generated by Zorro’s tree builder, looks like this:
How is such a tree produced from a set of samples? There are several methods; Zorro uses the Shannon i nformation entropy , which already had an appearance on this blog in the Scalping article. At first it checks one of the features, let’s say x 1 . It places a hyperplane with the plane formula x 1 = t into the feature space. This hyperplane separates the samples with x 1 > t from the samples with x 1 < t . The dividing threshold t is selected so that the information gain – the difference of information entropy of the whole space, to the sum of information entropies of the two divided sub-spaces – is maximum. This is the case when the samples in the subspaces are more similar to each other than the samples in the whole space.
This process is then repeated with the next feature x 2 and two hyperplanes splitting the two subspaces. Each split is equivalent to a comparison of a feature with a threshold. By repeated splitting, we soon get a huge tree with thousands of threshold comparisons. Then the process is run backwards by pruning the tree and removing all decisions that do not lead to substantial information gain. Finally we end up with a relatively small tree as in the code above.
Decision trees have a wide range of applications. They can produce excellent predictions superior to those of neural networks or support vector machines. But they are not a one-fits-all solution, since their splitting planes are always parallel to the axes of the feature space. This somewhat limits their predictions. They can be used not only for classification, but also for regression, for instance by returning the percentage of samples contributing to a certain branch of the tree. Zorro’s tree is a regression tree. The best known classification tree algorithm is C5.0 , available in the C50 package for R.
For improving the prediction even further or overcoming the parallel-axis-limitation, an ensemble of trees can be used, called a random forest . The prediction is then generated by averaging or voting the predictions from the single trees. Random forests are available in R packages randomForest , ranger and Rborist .
Conclusão.
There are many different data mining and machine learning methods at your disposal. The critical question: what is better, a model-based or a machine learning strategy? There is no doubt that machine learning has a lot of advantages. You don’t need to care about market microstructure, economy, trader psychology, or similar soft stuff. You can concentrate on pure mathematics. Machine learning is a much more elegant, more attractive way to generate trade systems. It has all advantages on its side but one. Despite all the enthusiastic threads on trader forums, it tends to mysteriously fail in live trading.
Every second week a new paper about trading with machine learning methods is published (a few can be found below). Please take all those publications with a grain of salt. According to some papers, phantastic win rates in the range of 70%, 80%, or even 85% have been achieved. Although win rate is not the only relevant criterion – you can lose even with a high win rate – 85% accuracy in predicting trades is normally equivalent to a profit factor above 5. With such a system the involved scientists should be billionaires meanwhile. Unfortunately I never managed to reproduce those win rates with the described method, and didn’t even come close. So maybe a lot of selection bias went into the results. Or maybe I’m just too stupid.
Compared with model based strategies, I’ve seen not many successful machine learning systems so far. And from what one hears about the algorithmic methods by successful hedge funds, machine learning seems still rarely to be used. But maybe this will change in the future with the availability of more processing power and the upcoming of new algorithms for deep learning.
Classification using deep neural networks: Dixon. et. al.2016 Predicting price direction using ANN & SVM: Kara. et. al.2011 Empirical comparison of learning algorithms: Caruana. et. al.2006 Mining stock market tendency using GA & SVM: Yu. Wang. Lai.2005.
The next part of this series will deal with the practical development of a machine learning strategy.
Комментариев нет:
Отправить комментарий