BigData. Iniciantes. Negociação
BigData. Iniciantes. Negociação
Machine Beats Human: Usando Machine Learning em Forex.
Aprendizado de máquina e negociação é um assunto muito interessante. É também um assunto onde você pode gastar toneladas de tempo escrevendo código e lendo jornais e, em seguida, uma criança pode bater em você enquanto estiver jogando Mario Kart.
Nos posts de nexts, vamos falar sobre:
Otimizar entradas e saídas. Isso e somente isso pode fazer muita diferença na sua conta bancária. Calcular o tamanho da posição (caso você não goste do critério de Kelly) Encontre a possível correlação entre os diferentes pares (par de negociações). Eu amo a correlação EURUSD vs GBPJPY! Calcular suporte & amp; linhas de resistência.
Mas o que é aprendizado de máquina?
Algoritmos de aprendizado de máquina são algoritmos nos quais uma máquina pode identificar padrões em seus dados. Sim, é assim tão simples. Por exemplo, encontre todos os animais nesta foto e desenhe uma caixa ao redor deles. Além disso, nomeie esse animal. Louco eu sei. Para negociação, como você pode imaginar, é bem parecido:
Para que uma máquina "aprenda", você precisa ensinar o que é certo ou errado (aprendizagem supervisionada) ou dar a ela um grande conjunto de dados e deixá-lo ficar selvagem (sem supervisão). Para identificar objetos, isso é direto, mas e a negociação?
Olhei em volta para ver se havia algum programa de aprendizado de máquina que pudesse identificar linhas S / R, mas sem sucesso. Então eu decidi escrever o primeiro programa de aprendizado de máquina em python que identifica linhas de suporte e resistência em Python. Outro primeiro! Viva!
Mas como um algoritmo pode identificar essas áreas? Hoooooow Senhoras e senhores (e robôs), deixe-me apresentar-lhe MeanShift, um algoritmo não supervisionado que é usado principalmente para reconhecimento de imagem e é bastante trivial para configurar e executar (mas também muito lento).
A idéia é que esse algoritmo me permita particionar meus dados (forex ticks) em áreas e então eu possa usar as "arestas" como linhas de suporte e resistência. Idéia legal, mas isso funciona?
Analisamos cerca de 12 milhões de pontos de dados do EURUSD em 2014 e alguns meses de 2015. As linhas de resistência são posicionadas automaticamente por um algoritmo de aprendizado de máquina.
O que é realmente legal (e assustador) é que o algoritmo praticamente o prega. PREGOS é difícil. Fica realmente assustador quando vamos usar o algoritmo para identificar micro-estruturas e iniciar o escalpelamento.
O sistema é capaz de processar qualquer tipo de dados de séries temporais (estoques, forex, ouro, o que for) e irá renderizar um gráfico interativo html (como o gráfico acima) com seus dados e o S / L gerado pela máquina. O código está aqui, então fique louco.
Agora vamos percorrer o código. Depois de ter seu conjunto de dados, você precisa lê-los e limpá-los. Prepare-se para alguns pandas mágicos.
Deixamos cair os valores vazios (finais de semana) e, em seguida, os dados foram redimensionados para 24 horas de castiçais (ohcl). Isso torna muito mais fácil traçar. Os grouped_data são os dados que serão alimentados no algoritmo ml.
Então nós preparamos os dados que vamos usar no algoritmo.
No próximo post, discutiremos como tornar esse trabalho ainda melhor, discutiremos alguns resultados muito interessantes (o algoritmo pode realmente prever o futuro?) E começaremos a usá-lo em nossa própria negociação. Se você quiser verificar o próximo artigo e ler mais sobre negociação e investimento usando algoritmos, inscreva-se no boletim informativo.
Em breve: Machine Learning Gone Wild - Usando o código!
Se você tiver mais comentários, envie-me um ping no jonromero ou inscreva-se no boletim informativo.
Outro Jurídico Este é um tutorial de engenharia sobre como construir uma plataforma de algotrading para experimentação e DIVERSÃO. Todas as sugestões aqui não são conselhos financeiros. Se você perder algum (ou todo) dinheiro porque seguiu qualquer aviso de negociação ou implantou este sistema em produção, você não pode culpar esse blog aleatório (e / ou eu). Aproveite por sua conta e risco.
Negociação forex de aprendizado de máquina
previsões. Isso melhorou muito o fator lucro (lucro bruto dividido pela perda bruta) de nossa estratégia. Usamos uma alavancagem para aumentar ou diminuir o risco e o retorno esperado.
Desvantagens de uma estratégia de negociação automática.
podemos monitorar o mercado e esperar pelo momento em que a nossa estratégia não funciona mais usando as estatísticas que a estratégia deve seguir, como o máximo consumo consecutivo e monitorando o volume. Em segundo lugar, podemos fazer o que é chamado de aprendizado on-line, onde nossa estratégia está sendo continuamente otimizada em novos dados. Esta segunda opção é uma boa prática, mas não protege contra as mudanças súbitas que são típicas no forex a cada poucos anos. A melhor solução é implementar esses dois métodos, otimizando regularmente nossas estratégias e, ao mesmo tempo, conscientes de que uma mudança mais profunda na estratégia será necessária.
A outra crítica é que nunca entendemos realmente o que um modelo de caixa preta faz. Esse não é o caso para nós, pois o nosso modelo é bastante simples, no entanto, devemos levar o segredo ao nosso túmulo ou pelo menos até que a estratégia não seja mais lucrativa.
Forex Mecânico
Negociação no mercado de câmbio usando estratégias de negociação mecânicas.
Machine Learning em Forex Trading: Por que muitos acadêmicos estão fazendo tudo errado.
Construir estratégias de aprendizado de máquina que possam obter resultados decentes sob condições reais de mercado sempre foi um desafio importante no comércio algorítmico. Apesar da grande quantidade de interesse e das incríveis recompensas em potencial, ainda não há publicações acadêmicas capazes de mostrar bons modelos de aprendizado de máquina que possam enfrentar com sucesso o problema de negociação no mercado real (para o melhor de meu conhecimento, postar um comentário se você tem um e eu ficarei mais do que feliz em lê-lo). Embora muitos artigos publicados pareçam mostrar resultados promissores, é frequente que esses artigos caiam em uma variedade de problemas de viés estatístico que tornam o real sucesso de mercado de suas estratégias de aprendizado de máquina altamente improvável. No post de hoje eu vou falar sobre os problemas que eu vejo na pesquisa acadêmica relacionada com o aprendizado de máquina no Forex e como eu acredito que esta pesquisa poderia ser melhorada para produzir informações muito mais úteis para as comunidades acadêmicas e comerciais.
A maioria das armadilhas no projeto de estratégia de aprendizado de máquina ao fazer operações de Forex é inevitavelmente herdada do mundo dos problemas determinísticos de aprendizagem. Ao construir um algoritmo de aprendizado de máquina para algo como reconhecimento de face ou reconhecimento de letras, há um problema bem definido que não muda, que geralmente é resolvido construindo um modelo de aprendizado de máquina em um subconjunto de dados (um conjunto de treinamento) e testando se O modelo foi capaz de resolver corretamente o problema usando o lembrete dos dados (um conjunto de testes). É por isso que você tem alguns conjuntos de dados famosos e bem estabelecidos que podem ser usados para estabelecer a qualidade das técnicas de aprendizado de máquina recentemente desenvolvidas. O ponto chave aqui, no entanto, é que os problemas inicialmente enfrentados pelo aprendizado de máquina eram, em grande parte, determinísticos e independentes do tempo.
Ao entrar na negociação, a aplicação dessa mesma filosofia gera muitos problemas relacionados tanto ao caráter parcialmente não determinístico do mercado quanto à sua dependência temporal. O simples ato de tentar selecionar conjuntos de treinamento e testes introduz uma quantidade significativa de viés (um viés de seleção de dados) que cria um problema. Se a seleção for repetida para melhorar os resultados no conjunto de testes & # 8211; o que você deve supor acontece em pelo menos alguns casos & # 8211; então o problema também adiciona uma grande quantidade de viés de mineração de dados. Toda a questão de se fazer um único exercício de treinamento / validação também gera um problema relacionado à maneira como esse algoritmo deve ser aplicado na negociação ao vivo. Por definição, a negociação ao vivo será diferente, uma vez que a seleção de conjuntos de treinamento / teste precisa ser reaplicada a dados diferentes (já que agora o conjunto de testes é um dado verdadeiramente desconhecido). O viés inerente à seleção inicial do período in-sample / out-of-sample e a falta de quaisquer regras testadas para negociação sob dados desconhecidos faz com que tais técnicas falhem comumente em negociações ao vivo. Se um algoritmo for treinado com dados de 2000-2012 e tiver sido validado com dados de 2012-2015, não há razão para acreditar que o mesmo sucesso ocorrerá se treinado em dados de 2003-2015 e depois negociado de 2015 a 2017, os conjuntos de dados são muito diferentes na natureza.
O sucesso do algoritmo de medição também é um problema muito relevante aqui. Inevitavelmente, os algoritmos de aprendizado de máquina usados para o comércio devem ser medidos em termos de mérito por sua capacidade de gerar retornos positivos, mas alguma literatura mede o mérito de novas técnicas algorítmicas, tentando avaliar sua capacidade de obter previsões corretas. As previsões corretas não são necessariamente iguais às negociações lucrativas, como você pode ver facilmente ao criar classificadores binários. Se você tentar prever a direção da próxima vela, ainda poderá sofrer uma perda se estiver quase certo em pequenas velas e errado em velas maiores. De fato, a maior parte desse tipo de classificadores & # 8211; a maioria daqueles que não trabalham & # 8211; acabam prevendo a direcionalidade com uma precisão acima de 50%, mas não acima do nível necessário para superar as comissões que permitiriam a lucrativa troca de opções binárias.
Para construir estratégias que são, na maior parte, livres dos problemas acima, sempre defendi uma metodologia na qual o algoritmo de aprendizado de máquina é retreinado antes de tomar qualquer decisão de treinamento. Usando uma janela móvel para treinamento e nunca tomando mais de uma decisão sem reciclar todo o algoritmo, podemos nos livrar do viés de seleção inerente à escolha de um único conjunto dentro da amostra / fora da amostra. Dessa maneira, todo o teste é uma série de exercícios de treinamento / validação que garantem que o algoritmo de aprendizado de máquina funcione mesmo sob conjuntos de dados de treinamento tremendamente diferentes. Eu também defendo a medição do desempenho real do backtesting para medir o mérito de um algoritmo de aprendizado de máquina e, além disso, eu diria até que nenhum algoritmo pode valer seu sal sem ser provado em condições reais fora da amostra. . Desenvolver algoritmos dessa maneira é muito mais difícil e eu não encontrei um único artigo acadêmico que siga este tipo de abordagem (se eu perdi, fique à vontade para postar um link para que eu possa incluir um comentário!).
Isso não significa que esta metodologia seja completamente livre de problemas, no entanto, ainda está sujeita aos problemas clássicos relevantes para todos os exercícios de construção de estratégia, incluindo viés de ajuste de curva e viés de mineração de dados. É por isso que também é importante usar uma grande quantidade de dados (eu uso mais de 25 anos para testar sistemas, sempre treinando novamente após cada decisão derivada de aprendizado de máquina) e para realizar testes adequados de avaliação de viés de mineração de dados para determinar a confiança com a qual nós Podemos dizer que os resultados não vêm do acaso. Meu amigo AlgoTraderJo & # 8211; que também passa a ser um membro da minha comunidade de negociação & # 8211; Atualmente, está crescendo um segmento no ForexFactory seguindo este mesmo tipo de filosofia para o desenvolvimento de aprendizado de máquina, enquanto trabalhamos em alguns novos algoritmos de aprendizado de máquina para minha comunidade de negócios. Você pode consultar o tópico dele ou postagens anteriores no meu blog para vários exemplos de algoritmos de aprendizado de máquina desenvolvidos dessa maneira.
Se você gostaria de aprender mais sobre nossos desenvolvimentos em aprendizado de máquina e como você também pode desenvolver suas próprias estratégias de aprendizado de máquina usando a estrutura F4, considere juntar-se à Asirikuy, um site repleto de vídeos educacionais, sistemas de negociação, desenvolvimento e e abordagem transparente para negociação automatizada.
Aprendizado de Máquina para Negociação.
Oferecido na Georgia Tech como CS 7646.
Programa de Nanodegree.
Carros voadores & amp; Vôo Autônomo.
Domine habilidades de engenharia de software de voo autônomo prontas para o trabalho à medida que você enfrenta desafios avançados, escreve código real para aeronaves reais e desenvolve uma compreensão sistêmica da pilha completa do Flying Car.
Acelere sua carreira com a credencial que leva você rapidamente ao sucesso no trabalho.
Sobre este curso.
Este curso apresenta aos alunos os desafios do mundo real de implementar estratégias de negociação baseadas em aprendizado de máquina, incluindo as etapas algorítmicas desde a coleta de informações até as ordens do mercado. O foco está em como aplicar abordagens de aprendizado de máquina probabilísticas às decisões de negociação. Consideramos abordagens estatísticas como regressão linear, KNN e árvores de regressão e como aplicá-las às situações reais de negociação de ações.
Custo do Curso
Aprox. 4 meses.
Nível de habilidade.
Incluído no curso.
Conteúdo rico de aprendizado.
Ministrado por profissionais da indústria.
Comunidade de Suporte ao Aluno.
Junte-se ao caminho para a grandeza.
Este curso gratuito é o primeiro passo para uma nova carreira no Flying Cars & amp; Programa de Nanodegio de Voo Autônomo.
Curso Livre.
Aprendizado de Máquina para Negociação.
Melhore seu conjunto de habilidades e impulsione sua contratação por meio de aprendizado inovador e independente.
Programa de Nanodegree.
Carros voadores & amp; Vôo Autônomo.
Acelere sua carreira com a credencial que leva você rapidamente ao sucesso no trabalho.
Leads do curso.
Tucker Balch.
Arpan Chakraborty.
O que você aprenderá
Este curso é composto por três mini-cursos:
Mini-curso 1: Manipulando Dados Financeiros em Python Mini-curso 2: Investimento Computacional Mini-curso 3: Algoritmos de Aprendizado de Máquina para Negociação.
Cada mini-curso consiste em cerca de 7 a 10 lições curtas. Atribuições e projetos são intercalados.
Queda 2015 Estudantes da OMS: Haverá dois testes - um de meio de aula após o minicurso 2 e um exame final.
Pré-requisitos e requisitos.
Os estudantes devem ter fortes habilidades de codificação e alguma familiaridade com os mercados de ações. Nenhuma experiência financeira ou de aprendizado de máquina é assumida.
Note que este curso atende estudantes com foco em ciência da computação, assim como alunos de outras áreas, como engenharia de sistemas industriais, gerenciamento ou matemática, que têm experiências diferentes. Todos os tipos de estudantes são bem vindos!
Os tópicos do ML podem ser & quot; revisão & quot; para alunos do CS, enquanto partes de finanças serão revisadas para estudantes de finanças. No entanto, mesmo que você tenha experiência nesses tópicos, descobrirá que os consideramos de uma maneira diferente da que você poderia ter visto antes, em particular com um olho voltado para a implementação da negociação.
A programação será principalmente em Python. Vamos fazer uso pesado de bibliotecas de computação numérica como o NumPy e o Pandas.
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 do 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 de reforço ao jogar milhões de jogos Go contra si mesmo. 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-o manualmente, e isso funciona. & # 8221;
Isso realmente aconteceu. 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ço 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 pode ser usada 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. Nesse 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 Os coeficientes an podem ser calculados de forma que as distâncias do plano às amostras mais próximas & # 8211; que são chamados os vetores de suporte & # 8216; & # 8217; do avião, daí o nome do algoritmo & # 8211; é o máximo. Desta forma, temos um classificador binário com separação ideal de amostras vencedoras e perdedoras.
O problema: normalmente essas amostras não são linearmente separáveis & # 8211; eles estão espalhados irregularmente no espaço de recursos. Nenhum plano plano pode ser espremido entre vencedores e perdedores. Se pudesse, nós tínhamos métodos mais simples para calcular esse plano, f. i. análise discriminante linear. Mas, para o caso comum, precisamos do truque do SVM: Adicionar mais dimensões ao espaço do recurso. Para isso, o algoritmo SVM produz mais recursos com uma função kernel que combina quaisquer dois preditores existentes para um novo recurso. Isso é análogo ao passo acima da regressão simples à regressão polinomial, onde também mais características são adicionadas, tomando o único preditor da enésima potência. Quanto mais dimensões você adicionar, mais fácil será separar as amostras com um hiperplano plano. Este plano é então transformado de volta ao espaço n-dimensional original, ficando enrugado e amassado no caminho. Ao selecionar inteligentemente a função kernel, o processo pode ser executado sem realmente computar a transformação.
Como as redes neurais, as SVMs podem ser usadas não apenas para classificação, mas também para regressão. Eles também oferecem alguns parâmetros para otimizar e possivelmente sobrecarregar o processo de previsão:
Função de kernel. Você normalmente usa um kernel RBF (função de base radial, um kernel simétrico), mas você também tem a escolha de outros kernels, como sigmoid, polynomial e linear. Gama, a largura do parâmetro de Custo do kernel RBF C, a penalidade & # 8216; & # 8217; para classificações erradas nas amostras de treinamento.
Um SVM frequentemente usado é a biblioteca libsvm. Também está disponível em R no pacote e1071. Na próxima e última parte desta série pretendo descrever uma estratégia de negociação usando este SVM.
8. K-vizinho mais próximo.
Comparado com as coisas pesadas de ANN e SVM, é um algoritmo simples e agradável com uma propriedade única: ele não precisa de treinamento. Então as amostras são o modelo. Você poderia usar este algoritmo para um sistema de negociação que aprende permanentemente simplesmente adicionando mais e mais amostras. O algoritmo do vizinho mais próximo calcula as distâncias no espaço de feições a partir dos valores atuais do recurso para as amostras k mais próximas. Uma distância no espaço n-dimensional entre dois conjuntos de recursos (x 1 .. x n) e (y 1 .. y n) é calculada exatamente como em 2 dimensões:
O algoritmo simplesmente prevê o alvo a partir da média das k variáveis-alvo das amostras mais próximas, ponderadas pelas suas distâncias inversas. Pode ser usado para classificação, bem como para regressão. Os truques de software emprestados da computação gráfica, como uma árvore binária adaptativa (ABT), podem tornar o vizinho mais próximo bastante rápido. Na minha vida passada como programador de jogos de computador, usamos esses métodos em jogos para tarefas como a inteligência inimiga de autoaprendizagem. Você pode chamar a função knn em R para a previsão do vizinho mais próximo & # 8211; ou escreva uma função simples em C para esse propósito.
Este é um algoritmo de aproximação para classificação não supervisionada. Tem alguma semelhança, não apenas seu nome, com o vizinho mais próximo. Para classificar as amostras, o algoritmo primeiro coloca k pontos aleatórios no espaço de recurso. Em seguida, ele atribui a qualquer um desses pontos todas as amostras com as menores distâncias a ele. O ponto é então movido para a média dessas amostras mais próximas. Isso gerará uma nova atribuição de amostras, pois algumas amostras estão agora mais próximas de outro ponto. O processo é repetido até que a atribuição não mude mais movendo os pontos, ou seja, cada ponto fica exatamente na média de suas amostras mais próximas. Agora temos k classes de amostras, cada uma na vizinhança de um dos k pontos.
Esse algoritmo simples pode produzir resultados surpreendentemente bons. Em R, a função kmeans faz o truque. Um exemplo do algoritmo k-means para classificar os padrões de vela pode ser encontrado aqui: Classificação não-supervisionada de castiçal para diversão e lucro.
10. Naive Bayes.
Este algoritmo usa Bayes & # 8217; Teorema para classificar amostras de recursos não numéricos (ou seja, eventos), como os padrões de velas mencionados acima. Suponha que um evento X (por exemplo, que o Open da barra anterior esteja abaixo do Open da barra atual) apareça em 80% de todas as amostras vencedoras. Qual é então a probabilidade de que uma amostra esteja ganhando quando ela contém o evento X? Não é 0,8, como você pode pensar. A probabilidade pode ser calculada com Bayes & # 8217; Teorema:
P (Y | X) é a probabilidade de que o evento Y (f. i. ganhar) ocorra em todas as amostras contendo o evento X (no nosso exemplo, Open (1) & lt; Open (0)). De acordo com a fórmula, é igual à probabilidade de X ocorrer em todas as amostras vencedoras (aqui, 0,8), multiplicada pela probabilidade de Y em todas as amostras (em torno de 0,5 quando você estava seguindo o meu conselho de amostras balanceadas) e dividido por a probabilidade de X em todas as amostras.
Se somos ingênuos e assumimos que todos os eventos X são independentes uns dos outros, podemos calcular a probabilidade geral de que uma amostra está ganhando, simplesmente multiplicando as probabilidades P (X | ganhando) para cada evento X. Desta forma, acabamos com esta fórmula:
com um fator de escala s. Para que a fórmula funcione, as características devem ser selecionadas de forma que sejam tão independentes quanto possível, o que impõe um obstáculo ao uso de Naive Bayes na negociação. Por exemplo, os dois eventos Close (1) & lt; Close (0) e Open (1) & lt; Open (0) provavelmente não é independente um do outro. Os preditores numéricos podem ser convertidos em eventos dividindo o número em intervalos separados.
O algoritmo Naive Bayes está disponível no pacote onipresente R e1071.
11. Árvores de decisão e regressão.
Essas árvores predizem um resultado ou um valor numérico com base em uma série de decisões sim / não, em uma estrutura como os ramos de uma árvore. Qualquer decisão é a presença de um evento ou não (no caso de recursos não numéricos) ou uma comparação de um valor de recurso com um limite fixo. Uma típica função de árvore, gerada pelo construtor de árvores do Zorro, se parece com isto:
Como essa árvore é produzida a partir de um conjunto de amostras? Existem vários métodos; O Zorro usa a entropia de informação de Shannon, que já apareceu neste blog no artigo Scalping. No começo, ele verifica um dos recursos, digamos x 1. Ele coloca um hiperplano com a fórmula de plano x 1 = t no espaço de recurso. Este hiperplano separa as amostras com x 1 & gt; t das amostras com x 1 & lt; t. O limiar de divisão t é selecionado para que as informações ganhem & # 8211; a diferença de entropia de informação de todo o espaço, para a soma das entropias de informação dos dois sub-espaços divididos & # 8211; é o máximo. Esse é o caso quando as amostras nos subespaços são mais semelhantes entre si do que as amostras em todo o espaço.
Este processo é então repetido com o próximo recurso x 2 e dois hiperplanos dividindo os dois subespaços. Cada divisão é equivalente a uma comparação de um recurso com um limite. Por meio da divisão repetida, logo obtemos uma árvore enorme com milhares de comparações de limites. Em seguida, o processo é executado ao contrário, podando a árvore e removendo todas as decisões que não levam a um ganho substancial de informações. Finalmente acabamos com uma árvore relativamente pequena como no código acima.
As árvores de decisão possuem uma ampla variedade de aplicativos. Eles podem produzir previsões excelentes superiores às de redes neurais ou máquinas de vetores de suporte. Mas elas não são uma solução única, já que seus planos de divisão são sempre paralelos aos eixos do espaço de recursos. Isso limita um pouco suas previsões. Eles podem ser usados não apenas para classificação, mas também para regressão, por exemplo, retornando a porcentagem de amostras que contribuem para um determinado ramo da árvore. A árvore do Zorro é uma árvore de regressão. O algoritmo de árvore de classificação mais conhecido é o C5.0, disponível no pacote C50 para R.
Para melhorar ainda mais a previsão ou superar a limitação do eixo paralelo, um conjunto de árvores pode ser usado, chamado de floresta aleatória. A previsão é então gerada pela média ou votação das previsões das árvores individuais. Florestas aleatórias estão disponíveis nos pacotes R randomForest, ranger e Rborist.
Conclusão.
Existem muitos métodos diferentes de mineração de dados e aprendizado de máquina à sua disposição. A questão crítica: o que é melhor, uma estratégia baseada em modelos ou em aprendizado de máquina? Não há dúvida de que o aprendizado de máquina tem muitas vantagens. Você não precisa se preocupar com a microestrutura do mercado, a economia, a psicologia do trader ou o material leve similar. Você pode se concentrar em matemática pura. O aprendizado de máquina é uma maneira muito mais elegante e atraente de gerar sistemas de comércio. Tem todas as vantagens do seu lado, mas um. Apesar de todos os tópicos entusiasmados em fóruns de trader, ele tende a falhar misteriosamente em negociações ao vivo.
A cada segunda semana, um novo artigo sobre negociação com métodos de aprendizado de máquina é publicado (alguns podem ser encontrados abaixo). Por favor, leve todas aquelas publicações com um grão de sal. De acordo com alguns documentos, taxas de ganho fantásticas na faixa de 70%, 80% ou mesmo 85% foram alcançadas. Embora a taxa de ganho não seja o único critério relevante & # 8211; você pode perder mesmo com uma alta taxa de vitória & # 8211; A exatidão de 85% em prever negócios é normalmente equivalente a um fator de lucro acima de 5. Com tal sistema, os cientistas envolvidos devem ser bilionários enquanto isso. Infelizmente, nunca consegui reproduzir as taxas de ganho com o método descrito e nem sequer cheguei perto. Então, talvez muitos preconceitos de seleção tenham entrado nos resultados. Ou talvez eu seja muito burro.
Em comparação com estratégias baseadas em modelos, não vi muitos sistemas de aprendizado de máquina bem-sucedidos até agora. E a partir do que se ouve sobre os métodos algorítmicos de fundos de hedge bem-sucedidos, o aprendizado de máquina parece ainda ser raramente usado. Mas talvez isso mude no futuro com a disponibilidade de mais poder de processamento e o surgimento de novos algoritmos para aprendizado profundo.
Classificação usando redes neurais profundas: Dixon. et. al.2016 Previsão da direção do preço usando ANN & amp; SVM: Kara. et. al.2011 Comparação empírica de algoritmos de aprendizagem: Caruana. et. al.2006 Tendência do mercado de ações de mineração usando GA & amp; SVM: Yu. Wang. Lai.2005.
A próxima parte desta série tratará do desenvolvimento prático de uma estratégia de aprendizado de máquina.
Комментарии
Отправить комментарий