Skip to main content

Estratégia de negociação de rede neural


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.
Fragmento de Código 1. Função em C ++ que cria 84 exemplos usando 2 retornos como entradas e o retorno da próxima barra como saída.
No entanto, uma rede neural não sabe como processar entradas desde o início, uma vez que não conhece os pesos que são dados a cada conexão de rede neural. É por isso que precisamos "treinar & rdquo; uma rede neural usando um determinado conjunto de valores de entrada e saída para que os pesos que definem as conexões entre os neurônios possam ser adequadamente definidos. Em seguida, usamos uma rede neural treinada para prever os resultados em dados desconhecidos, que é onde podemos obter um benefício prevendo algum resultado relacionado a dados de preços.

Rede neural de estratégia de negociação
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 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, 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. Os spreads são supostamente apertados com boa liquidez nos principais pares de moedas estrangeiras. Por estas razões, ambas as plataformas foram direcionadas para este projeto.
Vários problemas surgem quando segmentam várias 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 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 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 fim, 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, que também reescreverão 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 construçã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 inversã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 é orientada 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 nas negociações 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 extensão comercial, que resultou em mais membros da população com o intervalo desejado 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 das Principais Estratégias durante um longo período 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 Mercados, 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ências (ZLTrend), osciladores altos no 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 de 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.

Negociação Algorítmica.
Desenvolva sistemas de negociação com o MATLAB.
A negociação algorítmica é uma estratégia de negociação que usa algoritmos computacionais para orientar decisões de negociação, geralmente em mercados financeiros eletrônicos. Aplicada em instituições de buy-side e sell-side, a negociação algorítmica forma a base de negociação de alta frequência, negociação de FOREX e análise associada de risco e execução.
Os desenvolvedores e usuários de aplicativos de comércio algorítmico precisam desenvolver, fazer backtest e implantar modelos matemáticos que detectem e explorem os movimentos do mercado. Um fluxo de trabalho efetivo envolve:
Desenvolvendo estratégias de negociação, usando técnicas de séries temporais técnicas, aprendizado de máquina e séries temporais não lineares Aplicando computação paralela e de GPU para backtesting e identificação de parâmetros com eficiência de tempo Calculando lucros e perdas e conduzindo análises de risco Executando análises de execução, como modelagem de impacto de mercado análise de custos de transação e detecção de icebergs Incorporando estratégias e análises em ambientes de negociação de produção.
Exemplos e como.
Análise Walk-Forward: Usando o MATLAB para Backtest sua estratégia de negociação (35:15) - Webinar Introdução ao Trading Toolbox, Parte 1: Conectar-se a corretores interativos (7:22) - Cointegração de vídeo e negociação de pares com o Econometrics Toolbox (1:01) : 27) - Webinar Backtesting Trading Strategies em apenas 8 linhas de código (4:13) - Video CalPERS analisa a dinâmica do mercado de moeda para identificar oportunidades de negociação intraday - História do usuário Quantitative Trading: Como construir o seu próprio negócio de negociação algorítmica, por Ernest Chan - Reserve o Código de Negociação Algorítmica e Outros Recursos - Troca de Arquivos.
Referência de software.
Funções de Caixa de Ferramentas de Negociação - Classificação de Documentação App de Aprendizagem - Estatísticas e Machine Learning Toolbox App movavg: Gráfico de médias móveis atrasadas e atrasadas - Caixa de Ferramentas Financeiras Função sharpe: Compute Sharpe ratio - Caixa de Ferramentas Financeira Função gaoptimset: Criar estrutura de opções de algoritmos genéticos - Global Optimization Toolbox Function Cointegration Testing - Ferramentas de Caixa de Ferramentas da Econometria Ferramenta de Séries Temporais de Rede Neural - Documentação de Ferramentas de Rede Neural.
Escolha o seu país.
Escolha o seu país para obter conteúdo traduzido onde estiver disponível e veja eventos e ofertas locais. Com base na sua localização, recomendamos que você selecione:.
Você também pode selecionar um local na lista a seguir:
América Latina (Español) Canadá (inglês) Estados Unidos (inglês)
Bélgica (inglês) Dinamarca (inglês) Deutschland (Deutsch) España (Español) Finland (inglês) France (Français) Ireland (inglês) Italia (Italiano) Luxembourg (inglês)
Holanda (inglês) Noruega (inglês) Österreich (Deutsch) Portugal (inglês) Sweden (inglês) Switzerland Deutsch English Français Reino Unido (inglês)
Ásia-Pacífico.
Austrália (inglês) Índia (inglês) Nova Zelândia (inglês) 中国 (简体 中文) 日本 (日本語) 한국 (한국어)
Explorar produtos.
Experimente ou compre.
Aprenda a usar.
Obtenha suporte.
Sobre o MathWorks.
Acelerando o ritmo da engenharia e da ciência.
MathWorks é o desenvolvedor líder de software de computação matemática para engenheiros e cientistas.

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 lhes dá uma capacidade única de auto-treinamento, 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 a detecção de fraudes ou a 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:
1. Encontrar e formalizar uma ideia de negociação.
2. Melhorando os parâmetros do seu modelo.
3. Descarte do modelo quando se tornar obsoleto.
Todo modelo baseado em rede neural tem uma vida útil e não pode ser usado indefinidamente. A longevidade do tempo de vida de um modelo depende da situação do mercado e de quanto tempo as interdependências de mercado refletidas nele permanecem atuais. No entanto, mais cedo ou mais tarde, qualquer modelo se torna obsoleto. Quando isso acontece, é possível treinar novamente o modelo usando dados completamente novos (ou seja, substituir todos os dados que foram usados), adicionar novos dados ao conjunto de dados existente e treinar o modelo novamente ou simplesmente retirar o modelo completamente.
Muitos comerciantes cometem o erro de seguir o caminho mais simples - eles dependem muito e usam a abordagem para a qual seu software fornece a funcionalidade mais amigável e automatizada. Essa abordagem mais simples está prevendo um preço de alguns bares à frente e baseando seu sistema de negociação nessa previsão. Outros traders prevêem mudança de preço ou porcentagem da mudança de preço. Essa abordagem raramente produz melhores resultados do que a previsão direta do preço. Ambas as abordagens simplistas não descobrem e exploram com lucro a maioria das importantes interdependências de longo prazo e, como resultado, o modelo rapidamente se torna obsoleto à medida que as forças motrizes globais mudam.
A abordagem geral mais ideal para o uso de redes neurais.

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 aprendizagem profunda, então para qualquer problema que temos aqui (previsão de preço, estratégia de negociação, gerenciamento de risco) nós vamos usar diferentes variações de redes neurais artificiais (RNAs) e verificar 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 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 treinamento. Queremos prever o valor de t + 1 com base nas informações de N dias anteriores. Por exemplo, ter preços próximos dos últimos 30 dias no mercado que 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 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 grande número 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.
Alex Honchar.
máquinas de ensino e rap.
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 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.
Alex Honchar.
máquinas de ensino e rap.
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

Anomalias do mercado de ações e estratégias de negociação

Anomalias do mercado de ações e estratégias de negociação & amp; A teoria da caminhada aleatória Uma questão que é objeto de intenso debate entre acadêmicos e profissionais da área financeira é a Hipótese do Mercado Eficiente (EMH). A Hipótese do Mercado Eficiente afirma que, a qualquer momento, os preços de títulos refletem totalmente todas as informações disponíveis. As implicações da hipótese do mercado eficiente são verdadeiramente profundas. A maioria dos indivíduos que compram e vendem títulos (ações em particular) o fazem sob a suposição de que os títulos que estão comprando valem mais do que o preço que estão pagando, enquanto os títulos que estão vendendo valem menos do que o preço de venda. Mas se os mercados são eficientes e os preços atuais refletem totalmente todas as informações, então comprar e vender títulos na tentativa de superar o mercado será efetivamente um jogo de azar, em vez de habilidade. A Hipótese do Mercado Eficiente evoluiu nos anos 1960 do Ph. D. diss...

Estratégia de negociação de matemática murrey

Estratégia de negociação de matemática de Murrey B) Venda de "Short"; (esperando que um mercado caia abruptamente a curto prazo). O software avaliará 100 ações em 30 segundos e configurará seu quadro de negociação com apenas um "clique". do mouse. (no nome do diretório). E muito & quot; Trader & quot; foi ensinado a & quot; Buy Low & quot; e para "Sell High" mas eles nunca foram informados de onde um dos dois era (ou é)! O nosso software faz todo o "pensamento mental" para voce ! Gráfico: Suco de Laranja: Futuros: 2) 5 Círculos de Conflito: Um re-construído "Automaticamente" dentro do & quot; pré-definido & quot; Quadro de Negociação. Estes 5 Círculos de Conflito irão ajudar & quot; predizer & quot; A Elliott Wave reverte muito antes de qualquer ação de preço de negociação diária de qualquer mercado entrar em sua estrutura de negociação. & quot; Novo & quot; os alunos aprenderão a & quot; ver...

Gráficos de estratégia de opções

Gráficos gratuitos de opções binárias. Aqui estão as melhores opções de gráficos binários gratuitos e plataformas de gráficos. Revisão da Tradingview. O Tradingview é um programa financeiro e gráfico de ações moderno que é excepcionalmente rápido, confiável e simples de usar. O que torna mais especial que é livre para usar e qualquer um pode usá-lo sem pagar um único centavo. Quando se trata de programas de estoque e de gráficos financeiros, a maioria do programa de gráficos não se concentra em questões centrais e os serviços não conseguem acompanhar o ritmo da tecnologia mais recente. Ao contrário de muitos programas de gráficos de ações, a visão de negociação não é de todo baseada em tecnologias convencionais como Silverlight, Flash ou Java. Essas tecnologias não são compatíveis com as últimas tendências, já que a maioria das pessoas está navegando em dispositivos de alta tecnologia, incluindo smartphones e tablets, e descartou PCs para visualizar gráficos. Os aparelhos modernos não ...