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.
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 na implementação para 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 de gráfico de preços usados como preditores de um gráfico neural). rede!). Cada amostra também inclui normalmente uma variável-alvo y, como o retorno da transação seguinte após a amostra, ou o próximo movimento de preço. Na literatura você pode encontrar y também chamado rótulo ou objetivo. Em um processo de treinamento, o algoritmo aprende a predizer o alvo y a partir dos preditores x 1 .. x n. A memória erudita & # 8216; & # 8217; é armazenado em uma estrutura de dados denominada model que é específica para o algoritmo (não confundir com um modelo financeiro para estratégias baseadas em modelos!). Um modelo de aprendizado de máquina pode ser uma função com regras de predição no código C, geradas pelo processo de treinamento. Ou pode ser um conjunto de pesos de conexão de uma rede neural.
Os preditores, recursos ou o que quer que você os chame, devem conter informações suficientes para prever a meta com alguma precisão. Eles também geralmente cumprem dois requisitos formais. Primeiro, todos os valores de previsão devem estar no mesmo intervalo, como -1 .. +1 (para a maioria dos algoritmos R) ou -100 .. +100 (para algoritmos Zorro ou TSSB). Então você precisa normalizá-los de alguma forma antes de enviá-los para a máquina. Em segundo lugar, as amostras devem ser equilibradas, isto é, igualmente distribuídas por todos os valores da variável alvo. Portanto, deve haver tantos vencendo quanto perdendo amostras. Se você não observar esses dois requisitos, ficará imaginando por que está obtendo resultados ruins com o algoritmo de aprendizado de máquina.
Os algoritmos de regressão predizem um valor numérico, como a magnitude e o sinal do próximo movimento de preço. Algoritmos de classificação preveem uma classe de amostra qualitativa, por exemplo, se ela está precedendo uma vitória ou uma perda. Alguns algoritmos, como redes neurais, árvores de decisão ou máquinas de vetores de suporte, podem ser executados em ambos os modos.
Alguns algoritmos aprendem a dividir amostras em classes sem precisar de nenhum destino. Isso é aprendizagem não supervisionada, ao contrário da aprendizagem supervisionada usando um alvo. Em algum lugar entre os dois está o aprendizado por reforço, em que o sistema se treina executando simulações com os recursos dados e usando o resultado como alvo de treinamento. AlphaZero, o sucessor do AlphaGo, usou o aprendizado por reforço ao jogar milhões de jogos Go contra si próprio. Em finanças, há poucas aplicações para aprendizado não supervisionado ou de reforço. 99% das estratégias de aprendizado de máquina usam o aprendizado supervisionado.
Seja qual for o sinal que estamos usando para os preditores em finanças, eles provavelmente conterão muito ruído e pouca informação, e serão não-estacionários em cima dele. Portanto, a previsão financeira é uma das tarefas mais difíceis no aprendizado de máquina. Algoritmos mais complexos não atingem necessariamente melhores resultados. A seleção dos preditores é fundamental para o sucesso. Não é uma boa ideia usar muitos preditores, pois isso simplesmente causa overfitting e falha na operação de amostra. Portanto, as estratégias de mineração de dados geralmente aplicam um algoritmo de pré-seleção que determina um pequeno número de preditores de um conjunto de muitos. A pré-seleção pode se basear na correlação entre preditores, no significado, no conteúdo da informação ou simplesmente no sucesso da previsão com um conjunto de testes. Experimentos práticos com seleção de recursos podem ser encontrados em um artigo recente no blog Robot Wealth.
Aqui está uma lista dos métodos mais populares de mineração de dados usados em finanças.
1. Sopa indicadora.
A maioria dos sistemas de negociação que estamos programando para clientes não é baseada em um modelo financeiro. O cliente queria apenas sinais comerciais de determinados indicadores técnicos, filtrados com outros indicadores técnicos em combinação com indicadores mais técnicos. Quando perguntado como essa miscelânea de indicadores poderia ser uma estratégia lucrativa, ele normalmente respondia: "Confie em mim." Eu estou trocando-o manualmente, e isso funciona. & # 8221;
Isso realmente aconteceu. Pelo menos às vezes. Embora a maioria desses sistemas não tenha 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 podem ser usadas para a regressão polinomial.
4. Perceptron.
Muitas vezes referida como uma rede neural com apenas um neurônio. De fato, um perceptron é uma função de regressão como acima, mas com um resultado binário, chamado de regressão logística. Não é a regressão, é um algoritmo de classificação. A função de aviso do Zorro (PERCEPTRON, & # 8230;) gera o código C que retorna 100 ou -100, dependendo se o resultado previsto está acima de um limite ou não:
Você pode ver que a matriz de caracteres é equivalente aos recursos x n na fórmula de regressão e os fatores numéricos são os coeficientes a n.
5. Redes nacionais.
A regressão linear ou logística só pode resolver problemas lineares. Muitos não se enquadram nesta categoria & # 8211; Um exemplo famoso é prever a saída de uma função XOR simples. E provavelmente também prevê preços ou retornos comerciais. Uma rede neural artificial (RNA) pode lidar com problemas não-lineares. É um monte de perceptrons que estão conectados em uma matriz de camadas. Qualquer perceptron é um neurônio da rede. Sua saída vai para as entradas de todos os neurônios da próxima camada, assim:
Como o perceptron, uma rede neural também aprende determinando os coeficientes que minimizam o erro entre a previsão da amostra e o alvo da amostra. Mas isso requer agora um processo de aproximação, normalmente com retropropagação do erro da saída para as entradas, otimizando os pesos em seu caminho. Este processo impõe duas restrições. Primeiro, as saídas dos neurônios devem agora ser funções continuamente diferenciáveis, em vez do simples limiar do perceptron. Em segundo lugar, a rede não deve ser muito profunda & # 8211; não deve ter muitas & # 8216; camadas ocultas & # 8217; de neurônios entre entradas e saídas. Essa segunda restrição limita a complexidade dos problemas que uma rede neural padrão pode resolver.
Ao usar uma rede neural para prever negociações, você tem muitos parâmetros com os quais você pode brincar e, se você não for cuidadoso, produzirá um grande viés de seleção:
Número de camadas ocultas Número de neurônios por camada oculta Número de ciclos de retropropagação, épocas nomeadas Taxa de aprendizado, a largura do passo de uma época Momentum, um fator de inércia para a adaptação de pesos Função de ativação.
A função de ativação emula o limiar do perceptron. Para a retropropagação você precisa de uma função continuamente diferenciável que gere um & # 8216; soft & # 8217; passo em um determinado valor x. Normalmente, uma função sigmoid, tanh ou softmax é usada. Às vezes, também é uma função linear que apenas retorna a soma ponderada de todas as entradas. 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 se tornaram 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 uma 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 da barra Abrir da corrente) aparece 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 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 isso:
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 início, 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.
Estúdio de aprendizado de máquina do Azure.
Simples, escalável, de ponta.
Bem-vindo ao Studio, a solução de aprendizado de máquina do Azure que você aprendeu a amar. O Studio é um ambiente de autoria visual de arrastar e soltar visualmente simples, baseado em navegador, no qual nenhuma codificação é necessária. Vá da ideia à implantação em questão de cliques.
Explore Aprendizado de Máquina:
Um serviço em nuvem totalmente gerenciado que permite criar, implantar e compartilhar facilmente soluções de análise preditiva.
Novo para aprendizado de máquina?
Faça uma introdução rápida à ciência de dados em cinco vídeos curtos e aprenda como selecionar o melhor algoritmo com o mini site de dicas de ML.
Novo no produto?
Se você possui habilidades em ciência de dados, mas está começando a usar o Aprendizado de Máquina do Azure, confira nossos tutoriais ou comece a usar experiências de amostra da Galeria. Tem perguntas? Pergunte aos nossos engenheiros no nosso fórum.
Usuário atual de R ou Python?
O Azure Machine Learning Studio inclui centenas de pacotes integrados e suporte para código personalizado.
Saiba mais sobre como começar o Machine Learning com R e Python lendo nosso blog.
Cientista de dados ou desenvolvedor?
O Aprendizado de Máquina do Azure é projetado para aprendizado de máquina aplicado. Use os melhores algoritmos e uma interface simples de arrastar e soltar e passe da ideia para a implantação em questão de cliques. Experimente de graça.
Se você é um desenvolvedor e quer a ciência de dados integrada, confira nossas APIs e o Azure Marketplace.
Implante em minutos.
Use o Azure Machine Learning para implantar seu modelo em produção como um serviço da Web em questão de minutos - um serviço da Web que pode ser chamado de qualquer dispositivo, em qualquer lugar e que pode usar qualquer fonte de dados. Saiba mais sobre os serviços da web.
Publique, compartilhe, gere receita.
Compartilhe sua solução com o mundo na Galeria ou no Azure Marketplace.
A rotatividade de clientes pode assumir diferentes formas, como mudar para o serviço de um concorrente, reduzir o número de serviços usados ou mudar para um serviço de custo mais baixo.
Tente prever o risco de crédito como anomalias nos dados.
Jogue com dados de financiamento de campanhas enquanto aprende como preparar um grande conjunto de dados para aprendizado de máquina por meio de recursos de processamento e engenharia.
A Galeria é uma plataforma de aprendizado desenvolvida por nossos engenheiros e usuários como você para compartilhar as melhores práticas com a comunidade de ciência de dados. Contribua hoje.
Histórias de clientes.
Veja como a American Eagle usa o Aprendizado de Máquina do Azure para tentar quebrar o recorde de velocidade em terra.
O que nossos clientes estão dizendo.
& quot; A beleza do Aprendizado de Máquina do Azure é que ele se integra à tecnologia de código aberto de forma dissociada. Qualquer que seja a sua infraestrutura, o Aprendizado de Máquina do Azure fornece valor. & Quot;
Fernando Fanton, vice-presidente sênior de desenvolvimento de produtos, Mendeley.
"O que estamos falando é um grau de colaboração e visibilidade inédita na indústria de petróleo e gás".
Doug Weber, Monitoramento remoto de aplicativos, Rockwell Automation.
"Isso simboliza o valor da Internet das Coisas e o aprendizado de máquina para o SLAC. Os sistemas inteligentes nos informam sobre um problema antes de usarmos os dados do sistema para calculá-lo manualmente. & Quot;
James Williams, Laboratório Nacional do Acelerador SLAC da CIO Stanford.
Previsão de moeda com base em um algoritmo de previsão.
Previsão de Forex Baseada em Aprendizado de Máquina: 68,57% de Taxa de Acerto em 7 Dias.
Previsão de Forex
O gráfico à esquerda mostra a previsão do preditor de moeda a partir de 15 de janeiro de 2018, que inclui recomendações longas e curtas. As caixas verdes são sinais longos, enquanto as caixas vermelhas são sinais curtos. O lado direito mostra os retornos dos pares de moedas sugeridos de 15 de janeiro de 2018 a 22 de janeiro de 2018.
Nome do pacote: Por país & # 8211; Estoques holandeses.
Duração da previsão: 7 dias (01/15/2018 & # 8211; 01/22/2018)
Eu Conheço Primeira Taxa de Acerto: 67.86%
Como interpretar este diagrama:
Previsão de Moeda Algorítmica: A tabela à esquerda é a previsão do Forex para o outlook do Forex, produzida pelo algoritmo de I Know First. A cada dia, os assinantes recebem previsões para seis horizontes de tempo diferentes. As moedas na previsão de 1 mês podem ser diferentes daquelas na previsão de 1 ano. Na tabela incluída, apenas as moedas relevantes foram incluídas. Uma caixa verde representa uma previsão positiva, enquanto um vermelho representa uma previsão negativa. As caixas são então organizadas de acordo com seus respectivos valores de sinal e previsibilidade (veja abaixo as definições detalhadas).
Desempenho de previsão: a tabela à direita compara o desempenho real da moeda com a previsão do I Know First. A coluna intitulada & # 8220; Previsão & # 8221; mostra a direção que o algoritmo previu e a coluna & # 8220;% Change & # 8221; mostra o desempenho real da moeda ao longo do período de tempo indicado. A precisão "& # 8220; & # 8221; coluna mostra um & # 8220; v & # 8221; se o algoritmo previu corretamente a direção do estoque ou um & # 8220; x & # 8221; se a previsão estava incorreta. O & # 8220; Eu sei primeiro rácio de acerto & # 8221; representa a precisão do algoritmo ao prever a tendência da moeda.
Sinal: Este indicador representa a direção / tendência do movimento previsto; não uma porcentagem ou preço alvo específico. A intensidade do sinal indica quanto o preço atual se desvia do que o sistema considera um preço de equilíbrio ou “justo”.
Previsibilidade: Este valor é obtido calculando a correlação entre a previsão atual e o movimento real do ativo para cada período de tempo discreto. O algoritmo calcula a média dos resultados de todos os pontos de previsão, dando mais peso ao desempenho recente. À medida que a máquina continua aprendendo, os valores de P geralmente aumentam.
Riqueza Robótica.
Postado em 4 de março de 2016 por Kris Longmore.
Atualização 2: respondendo a outra sugestão, adicionei algumas curvas de patrimônio de um sistema de negociação simples usando o conhecimento obtido com essa análise.
Atualização 3: Em resposta a um comentário da Alon, adicionei alguns códigos Lite-C que geram os dados de treinamento usados nesta postagem e os geram em um arquivo. csv. Você pode se divertir bastante com isso e permite estender bastante a pesquisa apresentada aqui. Apreciar!
Atualização 4: 30 de março de 2017: A análise foi estendida a análise para incluir dados até o final de 2016. Claro, eu atualizei o post para refletir as mudanças.
O código para realizar a análise e gerar os dados que usei neste post, bem como o arquivo de dados em si e outro para um instrumento diferente que você pode experimentar, estão todos disponíveis para download gratuito entrando na nossa lista de discussão.
Um dos primeiros livros que li quando comecei a estudar os mercados, há alguns anos, foi a Análise Técnica Baseada em Evidência de David Aronson. O engenheiro em mim foi atraído pela & # 8216; Evidence Based & # 8217; parte do título. Isso foi logo depois de eu ter digerido uma carteira de negociação que reivindicava uma base na teoria do caos, cujo link, na verdade, era inexistente. Aparentemente, o uso de termos complexos no título de uma carteira de negociação empresta alguma medida de credibilidade. De qualquer forma, a Análise Técnica Baseada em Evidências é, em grande parte, uma justificativa de uma abordagem científica à negociação, incluindo um método para avaliação rigorosa da presença de viés de mineração de dados nos resultados do backtest. Há também uma discussão convincente, baseada na psicologia cognitiva, sobre as razões pelas quais alguns comerciantes se afastam dos métodos objetivos e adotam crenças subjetivas. Eu acho esta área fascinante.
Os leitores deste blog saberão que estou muito interessado em usar o aprendizado de máquina para lucrar com os mercados. Imagine my delight when I discovered that David Aronson had co-authored a new book with Timothy Masters titled Statistically Sound Machine Learning for Algorithmic Trading of Financial Instruments – which I will herein refer to as SSML. I quickly devoured the book and have used it as a handy reference ever since. While it is intended as a companion to Aronson’s (free) software platform for strategy development, it contains numerous practical tips for any machine learning practitioner and I’ve implemented most of his ideas in R.
I used SSML to guide my early forays into machine learning for trading, and this series describes some of those early experiments. While a detailed review of everything I learned from SSML and all the research it inspired is a bit voluminous to relate in detail, what follows is an account of what I found to be some of the more significant and practical learnings that I encountered along the way.
This post will focus on feature engineering and also introduce the data mining approach. The next post will focus on algorithm selection and ensemble methods for combining the predictions of numerous learners.
The data mining approach.
Data mining is just one approach to extracting profits from the markets and is different to a model-based approach. Rather than constructing a mathematical representation of price, returns or volatility from first principles, data mining involves searching for patterns first and then fitting a model to those patterns after the fact. Both model-based and data mining approaches have pros and cons, and I contend that using both approaches can lead to a valuable source of portfolio diversity.
The Financial Hacker summed up the advantages and disadvantages of the data mining approach nicely:
The advantage of data mining is that you do not need to care about market hypotheses. The disadvantage: those methods usually find a vast amount of random patterns and thus generate a vast amount of worthless strategies. Since mere data mining is a blind approach, distinguishing real patterns – caused by real market inefficiencies – from random patterns is a challenging task. Even sophisticated reality checks can normally not eliminate all data mining bias. Not many successful trading systems generated by data mining methods are known today.
David Aronson himself cautions against putting blind faith in data mining methods:
Though data mining is a promising approach for finding predictive patterns in data produced by largely random complex processes such as financial markets, its findings are upwardly biased. This is the data mining bias. Thus, the profitability of methods discovered by data mining must be evaluated with specialized statistical tests designed to cope with the data mining bias.
I would add that the implicit assumption behind the data mining approach is that the patterns identified will continue to repeat in the future. Of course, the validity of this assumption is unlikely to ever be certain.
Data mining is a term that can mean different things to different people depending on the context. When I refer to a data mining approach to trading systems development, I am referring to the use of statistical learning algorithms to uncover relationships between feature variables and a target variable (in the regression context, these would be referred to as the independent and dependent variables, respectively). The feature variables are observations that are assumed to have some relationship to the target variable and could include, for example, historical returns, historical volatility, various transformations or derivatives of a price series, economic indicators, and sentiment barometers. The target variable is the object to be predicted from the feature variables and could be the future return (next day return, next month return etc), the sign of the next day’s return, or the actual price level (although the latter is not really recommended, for reasons that will be explained below).
Although I differentiate between the data mining approach and the model-based approach, the data mining approach can also be considered an exercise in predictive modelling. Interestingly, the model-based approaches that I have written about previously (for example ARIMA, GARCH, Random Walk etc) assume linear relationships between variables. Modelling non-linear relationships using these approaches is (apparently) complex and time consuming. On the other hand, some statistical learning algorithms can be considered ‘universal approximators’ in that they have the ability to model any linear or non-linear relationship. It was not my intention to get into a philosophical discussion about the differences between a model-based approach and a data mining approach, but clearly there is some overlap between the two. In the near future I am going to write about my efforts to create a hybrid approach that attempts a synergistic combination of classical linear time series modelling and non-linear statistical learning – trust me, it is actually much more interesting than it sounds. Assista esse espaço.
Variables and feature engineering.
The prediction target.
The first and most obvious decision to be made is the choice of target variable. In other words, what are we trying to predict? For one-day ahead forecasting systems, profit is the usual target. I used the next day’s return normalized to the recent average true range, the implication being that in live trading, position sizes would be inversely proportionate to the recent volatility. In addition, by normalizing the target variable in this way, we may be able to train the model on multiple markets, as the target will be on the same scale for each.
Choosing predictive variables.
In SSML, Aronson states that the golden rule of feature selection is that the predictive power should come primarily from the features and not from the model itself. My research corroborated this statement, with many (but not all) algorithm types returning correlated predictions for the same feature set. I found that the choice of features had a far greater impact on performance than choice of model. The implication is that spending considerable effort on feature selection and feature engineering is well and truly justified. I believe it is critical to achieving decent model performance.
Many variables will have little or no relationship with the target variable and including these will lead to overfitting or other forms of poor performance. Aronson recommends using chi-square tests and Cramer’s V to quantify the relationship between variables and the target. I actually didn’t use this approach, so I can’t comment on it. I used a number of other approaches, including ranking a list of candidate features according to their Maximal Information Coefficient (MIC) and selecting the highest ranked features, Recursive Feature Elimination (RFE) via the caret package in R, an exhaustive search of all linear models, and Principal Components Analysis (PCA). Cada um deles é discutido abaixo.
Some candidate features.
Following is the list of features that I investigated as part of this research. Most were derived from SSML. This list is by no means exhaustive and only consists of derivatives and transformations of the price series. I haven’t yet tested exogenous variables, such as economic indicators, the price histories of other instruments and the like, but I think these are deserving of attention too. The following list is by no means exhaustive, but provides a decent starting point:
1-day log return Trend deviation: the logarithm of the closing price divided by the lowpass filtered price Momentum: the price today relative to the price x days ago, normalized by the standard deviation of daily price changes. ATR: the average true range of the price series Velocity: a one-step ahead linear regression forecast on closing prices Linear forecast deviation: the difference between the most recent closing price and the closing price predicted by a linear regression line Price variance ratio: the ratio of the variance of the log of closing prices over a short time period to that over a long time period. Delta price variance ratio: the difference between the current value of the price variance ratio and its value x periods ago. The Market Meanness Index: A measure of the likelihood of the market being in a state of mean reversion, created by the Financial Hacker. MMI deviation: The difference between the current value of the Market Meanness Index and its value x periods ago. The Hurst exponenet ATR ratio: the ratio of an ATR of a short (recent) price history to an ATR of a longer period. Delta ATR ratio: the difference between the current value of the ATR ratio and the value x bars ago. Bollinger width: the log ratio of the standard deviation of closing prices to the mean of closing prices, that is a moving standard deviation of closing prices relative to the moving average of closing prices. Delta bollinger width: the difference between the current value of the bollinger width and its value x bars ago. Absolute price change oscillator: the difference between a short and long lookback mean log price divided by a 100-period ATR of the log price.
Thus far I have only considered the most recent value of each variable. I suspect that the recent history of each variable would provide another useful dimension of data to mine. I left this out of the feature selection stage since it makes more sense to firstly identify features whose current values contain predictive information about the target variable before considering their recent histories. Incorporating this from the beginning of the feature selection stage would increase the complexity of the process by several orders of magnitude and would be unlikely to provide much additional value. I base that statement on a number of my own assumptions, not to mention the practicalities of the data mining approach, rather than any hard evidence.
Transforming the candidate features.
In my experiments, the variables listed above were used with various cutoff periods (that is, the number of periods used in their calculation). Typically, I used values between 3 and 20 since Aronson states in SSML that lookback periods greater than about 20 will generally not contain information useful to the one period ahead forecast. Some variables (like the Market Meanness Index) benefit from a longer lookback. For these, I experimented with 50, 100, and 150 bars.
Additionally, it is important to enforce a degree of stationarity on the variables. Davind Aronson again:
Using stationary variables can have an enormous positive impact on a machine learning model. There are numerous adjustments that can be made in order to enforce stationarity such as centering, scaling, and normalization. So long as the historical lookback period of the adjustment is long relative to the frequency of trade signals, important information is almost never lost and the improvements to model performance are vast.
Scaling: divide the indicator by the interquartile range (note, not by the standard deviation, since the interquartile range is not as sensitive to extremely large or small values). Centering: subtract the historical median from the current value. Normalization: both of the above. Roughly equivalent to traditional z-score standardization, but uses the median and interquartile range rather than the mean and standard deviation in order to reduce the impact of outliers. Regular normalization: standardizes the data to the range -1 to +1 over the lookback period (x-min)/(max-min) and re-centered to the desired range.
In my experiments, I generally adopted regular normalization using the most recent 50 values of the features.
Data Pre-Processing.
If you’re following along with the code and data provided (see note in bold above), I used the data for the GBP/USD exchange rate (sampled daily at midnight UTC, for the period 2009-2016), but I also provided data for EUR/USD (same sampling regime) for further experimentation.
Removing highly correlated variables.
It makes sense to remove variables that are highly correlated with other variables since they are unlikely to provide additional information that isn’t already contained elsewhere in the feature space. Keeping these variables will also add unnecessary computation time, increase the risk of overfitting and bias the final model towards the correlated variables.
Running caret ‘s function for examining pairwise correlations between variables – caret :: findCorrelation ( ) – with a cutoff of 0.3, these are the remaining variables and their pairwise correlations:
Feature selection via Maximal Information.
The maximal information coefficient (MIC) is a non-parametric measure of two-variable dependence designed specifically for rapid exploration of many-dimensional data sets. While MIC is limited to univariate relationships (that is, it does not consider variable interactions), it does pick up non-linear relationships between dependent and independent variables. Read more about MIC here. I used the minerva package in R to rank my variables according to their MIC with the target variable (next day’s return normalized to the 100-period ATR). Here’s the code output:
Comments
Post a Comment