Melhores estratégias 4: Aprendizado de máquinas.
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, o AlphaGo, pudesse derrotar o melhor jogador Go humano. Deep Blue era um sistema baseado em modelo com regras de xadrez hardwired. O AlphaGo é um sistema de mineração de dados, uma rede neural profunda treinada com milhares de jogos Go. Hardware não melhorado, mas um avanço no software foi essencial para o passo de vencer os melhores jogadores de xadrez para vencer os melhores jogadores Go.
Nesta 4ª parte da mini-série, analisaremos a abordagem de mineração de dados para o desenvolvimento de estratégias comerciais. 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. Aprendizagem de máquina ou "Inteligência Artificial" e # 8221; nem sempre está envolvido em estratégias de mineração de dados. Na verdade, o mais popular & # 8211; e surpreendentemente lucrativo & # 8211; O método de mineração de dados funciona sem redes neurais sofisticadas ou máquinas de vetor de suporte.
Princípios de aprendizado da máquina.
Um algoritmo de aprendizagem é alimentado com amostras de dados, normalmente derivadas de algum modo de preços históricos. Cada amostra consiste em n variáveis x 1 .. x n, comumente designadas preditores, recursos, sinais ou simplesmente entrada. Esses preditores podem ser os retornos de preços das últimas barras n, ou uma coleção de indicadores clássicos, ou qualquer outra função imaginável da curva de preços (I & # 8217; até mesmo visto os pixels de uma imagem de gráfico de preços usada como preditor para uma neural rede!). Cada amostra também inclui normalmente uma variável alvo y, como o retorno do próximo comércio depois de tirar a amostra, ou o próximo movimento de preços. Na literatura, você pode encontrar também o nome do rótulo ou objetivo. Em um processo de treinamento, o algoritmo aprende a prever o alvo y a partir dos preditores x 1 .. x n. A memória aprendida & # 8216; & # 8217; é armazenado em uma estrutura de dados chamada modelo que é específico para o algoritmo (não deve ser confundido com um modelo financeiro para estratégias baseadas em modelos!). Um modelo de aprendizagem de máquina pode ser uma função com regras de predição no código C, gerado pelo processo de treinamento. Ou pode ser um conjunto de pesos de conexão de uma rede neural.
Os preditores, características, ou o que quer que você os chama, devem conter informações suficientes para prever o alvo e com alguma precisão. Eles também cumprem com freqüência dois requisitos formais. Primeiro, todos os valores de preditores 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, ou seja, distribuídas igualmente em todos os valores da variável alvo. Então, deve haver quase tantos como ganhar amostras. Se você não observar estes dois requisitos, você se perguntará por que você está obtendo resultados ruins do algoritmo de aprendizado da máquina.
Os algoritmos de regressão prevêem um valor numérico, como a magnitude e o sinal do próximo movimento de preços. Os algoritmos de classificação prevêem 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 vetor de suporte, podem ser executados em ambos os modos.
Alguns algoritmos aprendem a dividir amostras em classes sem necessidade de qualquer alvo y. A aprendizagem sem supervisão desse tipo, em oposição à aprendizagem supervisionada usando um alvo. Somewhere inbetween é o aprendizado de reforço, onde o sistema se treina executando simulações com os recursos fornecidos e usando o resultado como alvo de treinamento. AlphaZero, o sucessor do AlphaGo, usou a aprendizagem de reforço ao jogar milhões de jogos Go contra si. Em finanças, há poucas aplicações para aprendizagem sem supervisão ou reforço. 99% das estratégias de aprendizagem de máquinas usam a aprendizagem supervisionada.
Independentemente dos sinais que usamos para preditores em finanças, eles provavelmente contêm muito ruído e pouca informação, e não serão estacionários além disso. Portanto, a previsão financeira é uma das tarefas mais difíceis na aprendizagem por máquinas. Algoritmos mais complexos não conseguem necessariamente melhores resultados. A seleção dos preditores é fundamental para o sucesso. Não é bom usar muitos preditores, uma vez que isso simplesmente causa superação e falha na operação da amostra. Portanto, as estratégias de mineração de dados geralmente aplicam um algoritmo de pré-eleição que determina um pequeno número de preditores de um grupo de muitos. A pré-seleção pode basear-se na correlação entre preditores, na significância, 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 sobre o blog Robot Wealth.
Aqui é uma lista dos métodos de mineração de dados mais populares usados em finanças.
1. Sopa indicadora.
A maioria dos sistemas de negociação que nós estamos programando para clientes não são baseados em um modelo financeiro. O cliente só queria sinais comerciais de certos indicadores técnicos, filtrado com outros indicadores técnicos em combinação com indicadores mais técnicos. Quando perguntado como essa mistura de indicadores poderia ser uma estratégia rentável, ele normalmente respondeu: "Confie em mim". Eu negocie-o manualmente e funciona. & # 8221;
Certamente. Pelo menos às vezes. Embora a maioria desses sistemas não tenha passado um teste WFA (e alguns nem mesmo um backtest simples), um número surpreendentemente grande. E esses também foram geralmente lucrativos no comércio real. O cliente havia experimentado sistematicamente indicadores técnicos até encontrar uma combinação que funcionasse em negociação ao vivo com certos ativos. Esta maneira de análise técnica de teste e erro é uma abordagem clássica de mineração de dados, apenas executada por um ser humano e não por uma máquina. Eu realmente não posso recomendar este método # 8211; e muita sorte, para não falar de dinheiro, provavelmente está envolvido & # 8211; mas posso testemunhar que às vezes leva a sistemas lucrativos.
2. Padrões de velas.
Não deve ser confundido com os padrões japoneses de velas que tiveram a melhor data antes, há muito tempo. O equivalente moderno é a negociação de ações de preço. Você ainda está olhando o aberto, alto, baixo e fechado de velas. Você ainda espera encontrar um padrão que preveja uma direção de preço. Mas você agora está curando curvas de preços contemporâneas para coleta desses padrões. Existem pacotes de software para esse fim. Eles procuram padrões que são lucrativos por algum critério definido pelo usuário, e usá-los para criar uma função de detecção de padrões específica. Poderia parecer este (do analisador de padrão Zorro & # 8217; s):
Esta função C retorna 1 quando os sinais correspondem a um dos padrões, caso contrário, você pode ver do longo código que esta 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, é classificar os sinais por sua magnitude e verificar a ordem de classificação. Um exemplo desse sistema pode ser encontrado aqui.
O mercado de ações de preços pode realmente funcionar? Assim como a sopa de indicadores, ela não é baseada em nenhum modelo financeiro racional. Pode-se, na melhor das hipóteses, imaginar que as seqüências de movimentos de preços levem os participantes do mercado a reagirem de uma certa maneira, estabelecendo assim um padrão preditivo temporário. No entanto, o número de padrões é bastante limitado quando você olha apenas as seqüê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. Desta forma, você está obtendo um número quase ilimitado de padrões & # 8211; mas à custa de deixar finalmente o reino do racional. É difícil imaginar como um movimento de preços pode ser previsto por alguns padrões de velas de semanas atrás.
Ainda assim, há muito esforço para isso. Um colega de blogueiro, Daniel Fernandez, administra um site de inscrição (Asirikuy) especializado em padrões de vela de dados minerados. Ele refinou o padrão de negociação até os menores detalhes, e se alguém conseguisse algum lucro desta forma, seria ele. Mas para seus assinantes & # 8217; desapontamento, trocando seus padrões ao vivo (QuriQuant) produziu resultados muito diferentes do que seus maravilhosos backtests. Se os sistemas de ação de preço rentáveis realmente existem, aparentemente ninguém já os encontrou.
3. Regressão linear.
A base simples de muitos algoritmos complexos de aprendizagem de máquina: Prever a variável alvo 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 de diferenças quadradas entre os valores verdadeiros de y das amostras de treino e seus i preditos a partir da fórmula acima:
Para amostras distribuídas normais, a minimização é possível com alguma aritmética da matriz, portanto, nenhuma iteração é necessária. No caso n = 1 & # 8211; com apenas uma variável preditor x & # 8211; a fórmula de regressão é reduzida para.
que é uma regressão linear simples, em oposição à regressão linear multivariada onde n & gt; 1. A 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, muitas vezes usado como alternativa para uma média móvel. A regressão linear multivariada está disponível na plataforma R através da função lm (...) que vem com a instalação padrão. Uma variante é a regressão polinomial. Como regressão simples, ele usa apenas uma variável preditor x, mas também seus graus quadrados e superiores, 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 a partir dos preços suavizados das últimas barras. A função polyfit de MatLab, R, Zorro e muitas outras plataformas podem ser usadas para regressão polinomial.
4. Perceptron.
Muitas vezes referido como uma rede neural com apenas um neurônio. Na verdade, um perceptron é uma função de regressão como acima, mas com um resultado binário, assim chamado de regressão logística. Não é regressão, é um algoritmo de classificação. A função de recomendação do Zorro (PERCEPTRON, & # 8230;) gera 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 sig é equivalente às características 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 nessa categoria & # 8211; um exemplo famoso é prever a saída de uma função XOR simples. E provavelmente também previsão de preços ou retornos comerciais. Uma rede neural artificial (ANN) pode enfrentar problemas não-lineares. É um monte de perceptrons que estão conectados em uma série 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, como esta:
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 exige agora um processo de aproximação, normalmente com backpropagating o erro da saída para as entradas, otimizando os pesos a caminho. Este processo impõe duas restrições. Primeiro, as saídas do neurônio devem agora ser continuamente funções diferenciáveis em vez do limiar de perceptron simples. Em segundo lugar, a rede não deve ser muito profunda e # 8211; não deve ter muitas camadas escondidas & # 8217; de neurônios entre entradas e saída. Esta segunda restrição limita a complexidade dos problemas que uma rede neural padrão pode resolver.
Ao usar uma rede neural para previsão de negociações, você tem muitos parâmetros com os quais você pode brincar e, se você não for cuidadoso, produza muitos tipos de seleção:
Número de camadas ocultas Número de neurônios por camada oculta Número de ciclos de backpropagation, épocas nomeadas Taxa de aprendizado, a largura do passo de uma Momência de época, um fator de inércia para a função de ativação de pesos.
A função de ativação emula o limite de perceptron. Para o backpropagation você precisa de uma função continuamente diferenciável que gere um & # 8216; soft & # 8217; passo com um certo valor x. Normalmente, é utilizada uma função sigmoide, tanh ou softmax. À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 R padrão (nnet, uma única rede de camada oculta) e em muitos pacotes, por exemplo RSNNS e FCNN4R.
6. Aprendizagem profunda.
Métodos de aprendizado profundo usam redes neurais com muitas camadas ocultas e milhares de neurônios, que não podem ser treinados de forma efetiva por backpropagation convencional. Vários métodos tornaram-se populares nos últimos anos para treinar tais redes enormes. Eles costumam pré-treinar as camadas do neurônio escondido para alcançar um processo de aprendizagem mais eficaz. Uma Máquina Boltzmann Restrita (RBM) é um algoritmo de classificação não supervisionado com uma estrutura de rede especial que não possui conexões entre os neurônios ocultos. Um auto-codificador esparso (SAE) usa uma estrutura de rede convencional, mas pré-treina as camadas ocultas de forma inteligente, reproduzindo os sinais de entrada nas saídas da camada com o menor número possível de conexões ativas. Esses métodos permitem redes muito complexas para lidar com tarefas de aprendizagem muito complexas. Como bater o melhor jogador humano do mundo.
As redes de aprendizagem profunda estão disponíveis nos pacotes Deepnet e Darch R. Deepnet fornece um autoencoder, Darch uma máquina Boltzmann restrito. Eu ainda não experimentei com o Darch, mas aqui é um exemplo de script R usando o autoencoder Deepnet com 3 camadas ocultas para sinais comerciais através da função neural () do Zorro & # 8217;
7. Suporte máquinas vetoriais.
Como uma rede neural, uma máquina de vetor 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 recursos n-dimensional. Definir a variável de destino y para um valor fixo determina um plano nesse espaço, chamado de hiperplane, pois possui mais de duas dimensões (na verdade, n-1). O hiperplane separa as amostras com y & gt; o das amostras com y & lt; 0. Os coeficientes a n podem ser calculados de forma a que as distâncias do plano para as amostras mais próximas # 8211; que são chamados de & # 8216; vetores de suporte & # 8217; do plano, daí o nome do algoritmo & # 8211; é o máximo. Desta forma, temos um classificador binário com a separação ideal de amostras vencedoras e perdidas.
O problema: normalmente, essas amostras não são linearmente separáveis e # 8211; Eles estão espalhados irregularmente no espaço de recursos. Nenhum avião plano pode ser espremido entre vencedores e perdedores. Se pudesse, tínhamos métodos mais simples para calcular esse avião, f. i. análise discriminante linear. Mas, no caso comum, precisamos do truque SVM: adicionando mais dimensões ao espaço de recursos. Para isso, o algoritmo SVM produz mais recursos com uma função kernel que combina dois preditores existentes para um novo recurso. Isso é análogo ao passo acima, desde a regressão simples até a regressão polinomial, onde também são adicionados mais recursos, levando o único preditor ao n-ésimo poder. Quanto mais dimensões você adiciona, mais fácil é separar as amostras com um hiperplano plano. Este plano é então transformado de volta para o espaço n-dimensional original, ficando enrugado e amassado no caminho. Através da seleção inteligente da função kernel, o processo pode ser executado sem realmente calcular a transformação.
À semelhança das redes neurais, os SVMs podem ser utilizados não apenas para classificação, mas também para regressão. Eles também oferecem alguns parâmetros para otimizar e possivelmente superar o processo de previsão:
Função 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. Gamma, a largura do kernel RBF Custo parâmetro C, & # 8216; penalidade & # 8217; para classificações erradas nas amostras de treino.
Um SVM usado frequentemente é a biblioteca libsvm. Ele também está disponível em R no pacote e1071. Na próxima e última parte desta série, planejo descrever uma estratégia comercial usando este SVM.
8. K-vizinho mais próximo.
Comparado com as coisas pesadas de ANN e SVM, esse é um bom algoritmo simples com uma propriedade única: não precisa de treinamento. Então as amostras são o modelo. Você poderia usar esse algoritmo para um sistema comercial que aprenda permanentemente simplesmente adicionando mais e mais amostras. O algoritmo vizinho mais próximo calcula as distâncias no espaço de recursos dos valores de recurso atuais para as amostras mais próximas do k. 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 prediz o alvo da média das k variáveis alvo das amostras mais próximas, ponderadas por suas distâncias inversas. Pode ser usado para classificação, bem como para regressão. Os truques de software emprestados a partir de gráficos de computador, como uma árvore binária adaptativa (ABT), podem fazer com que o vizinho mais próximo busque muito rápido. Na minha vida passada como programador de jogos de computador, usamos esses métodos em jogos para tarefas como inteligência inimiga de auto-aprendizagem. Você pode chamar a função knn em R para a previsão do vizinho mais próximo e # 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 com o nome, com o vizinho mais próximo. Para classificar as amostras, o algoritmo primeiro coloca k pontos aleatórios no espaço de recursos. Em seguida, 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, uma vez que algumas amostras estão agora mais próximas de outro ponto. O processo é repetido até a atribuição não mudar mais movendo os pontos, isto é, cada ponto está exatamente na média das amostras mais próximas. Agora temos k classes de amostras, cada uma na vizinhança de um dos pontos k.
Este algoritmo simples pode produzir resultados surpreendentemente bons. Em R, a função kmeans faz o truque. Um exemplo do algoritmo k-means para classificar padrões de velas pode ser encontrado aqui: classificação de castiçal não supervisionada para diversão e lucro.
10. Naive Bayes.
Este algoritmo usa Bayes & # 8217; Teorema para classificar amostras de características não numéricas (isto é, eventos), como os padrões de vela acima mencionados. Suponha que um evento X (por exemplo, que o Open da barra anterior esteja abaixo do Open da barra atual) aparece em 80% de todas as amostras vencedoras. Qual é então a probabilidade de uma amostra estar ganhando quando contém evento X? Não é 0.8 como você pensa. A probabilidade pode ser calculada com Bayes & # 8217; Teorema:
P (Y | X) é a probabilidade de que o evento Y (f. i. winning) ocorra em todas as amostras contendo evento X (no nosso exemplo, Abrir (1) & lt; Abrir (0)). De acordo com a fórmula, é igual à probabilidade de X ocorrer em todas as amostras vencedoras (aqui, 0,8), multiplicado pela probabilidade de Y em todas as amostras (cerca de 0,5 quando você seguiu meu conselho acima de amostras equilibradas) 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 um do outro, podemos calcular a probabilidade geral de que uma amostra ganhe simplesmente multiplicando as probabilidades P (X | winning) para cada evento X. Desta forma, acabamos com esta fórmula:
com um fator de escala s. Para que a fórmula funcione, os recursos devem ser selecionados de forma que sejam o mais independentes possível, o que impõe um obstáculo ao uso de Naive Bayes na negociação. Por exemplo, os dois eventos fecham (1) & lt; Fechar (0) e Abrir (1) & lt; Open (0) provavelmente não são independentes 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 omnipresente pacote e1071 R.
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 características não numerais) ou uma comparação de um valor de recurso com um limite fixo. Uma função de árvore típica, gerada pelo construtor de árvores do Zorro & # 8217; parece assim:
Como uma tal árvore é produzida a partir de um conjunto de amostras? Existem vários métodos; Zorro usa a entropia Shannon i nformation, que já teve uma aparição neste blog no artigo Scalping. No começo, verifica um dos recursos, digamos x 1. Coloca um hiperplano com a fórmula plana x 1 = t no espaço da característica. Este hiperplato separa as amostras com x 1 & gt; t das amostras com x 1 & lt; t. O limite de divisão t é selecionado de modo que o ganho de informação & # 8211; a diferença de entropia de informação de todo o espaço, a soma das entropias de informação dos dois sub-espaços divididos e # 8211; é o máximo. Este é o caso quando as amostras nos subespaços são mais parecidas entre si 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 fraccionamento repetido, logo obteremos uma enorme árvore com milhares de comparações de limiar. Em seguida, o processo é executado para trás pela poda da árvore e remoção de todas as decisões que não levam a um aumento substancial de informações. Finalmente, acabamos com uma árvore relativamente pequena como no código acima.
As árvores de decisão possuem uma ampla gama de aplicações. Eles podem produzir excelentes previsões superiores às das redes neurais ou às máquinas de vetor de suporte. Mas eles 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 só 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 é C5.0, disponível no pacote C50 para R.
Para melhorar a previsão ainda mais ou superar a limitação do eixo paralelo, um conjunto de árvores pode ser usado, chamado floresta aleatória. A previsão é então gerada pela média ou votação das previsões das árvores individuais. As florestas aleatórias estão disponíveis em pacotes R randomForest, ranger e Rborist.
Conclusão.
Existem vários métodos diferentes de mineração de dados e aprendizagem de máquinas à sua disposição. A questão crítica: o que é melhor, uma estratégia de aprendizagem baseada em modelos ou a máquina? Não há dúvida de que o aprendizado automático da máquina tem muitas vantagens. Você não precisa se preocupar com a microestrutura do mercado, a economia, a psicologia do comerciante ou coisas suaves semelhantes. Você pode se concentrar na matemática pura. O aprendizado de máquina é uma maneira muito mais elegante e atraente de gerar sistemas de comércio. Ele tem todas as vantagens do seu lado, mas um. Apesar de todos os tópicos entusiasmados nos fóruns de comerciantes, ele tende a falhar misteriosamente na negociação ao vivo.
A cada segunda semana, um novo artigo sobre comércio com métodos de aprendizagem de máquinas é publicado (alguns podem ser encontrados abaixo). Pegue todas essas publicações com um grão de sal. De acordo com alguns papéis, as taxas de ganhos fantásticos na faixa de 70%, 80% ou mesmo 85% foram alcançadas. Embora a taxa de ganhos não seja o único critério relevante & # 8211; você pode perder mesmo com uma alta taxa de vitória e # 8211; 85% de precisão na previsão de trades é normalmente equivalente a um fator de lucro acima de 5. Com esse sistema, os cientistas envolvidos devem ser bilionários enquanto isso. Infelizmente, eu nunca consegui reproduzir as taxas de vitórias com o método descrito, e nem chegou perto. Então, talvez um monte de viés de seleção tenha entrado nos resultados. Ou talvez eu seja muito estúpido.
Em comparação com as estratégias baseadas em modelos, eu não vi muitos sistemas de aprendizado de máquina bem sucedidos até agora. E do que se ouve sobre os métodos algorítmicos por hedge funds bem-sucedidos, a aprendizagem por máquinas parece ainda raramente ser usada. Mas talvez isso mude no futuro com a disponibilidade de mais poder de processamento e a próxima de novos algoritmos para aprendizagem profunda.
Classificação usando redes neurais profundas: Dixon. et. al.2018 Previsão de direção de preço usando ANN & amp; SVM: Kara. et. al.2018 Comparação empírica de algoritmos de aprendizagem: Caruana. et. al.2006 Tendência do mercado de ações de mineração com 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áquinas.
30 pensamentos sobre & ldquo; Better Strategies 4: Machine Learning & rdquo;
Bela postagem. Existe uma grande quantidade de potencial nessa abordagem em relação ao mercado.
Btw você está usando o editor de código que vem com zorro? como é possível obter essa configuração de cor?
O script colorido é produzido pelo WordPress. Você não pode mudar as cores no editor do Zorro, mas você pode substituí-lo por outros editores que suportem cores individuais, por exemplo Notepad ++.
É então possível que o bloco de notas detecte as variáveis zorro nos scripts? Quero dizer que o BarPeriod é comentado como está com o editor zorro?
Teoricamente sim, mas para isso você precisou configurar o destaque de sintaxe do Notepad ++ e digitar todas as variáveis na lista. Tanto quanto eu sei, o Notepad ++ também não pode ser configurado para exibir a descrição da função em uma janela, como faz o editor Zorro. Não existe uma ferramenta perfeita e # 8230;
Conforme o último parágrafo. Eu tentei muitas técnicas de aprendizado de máquina depois de ler vários & # 8216; peer reviewed & # 8217; papéis. Mas reproduzir seus resultados permanece indescritível. Quando eu vivo teste com ML, eu não posso parecer melhorar a entrada aleatória.
ML falha ao vivo? Talvez o treinamento do ML tenha que ser feito com dados de preços que incluam também o spread histórico, roll, tick e assim por diante?
Eu acho que o motivo # 1 para falha ao vivo é o viés de mineração de dados, causado por seleção tendenciosa de entradas e parâmetros para o algo.
Obrigado ao autor pela grande série de artigos.
No entanto, deve-se notar que não precisamos restringir nossa visão ao prever apenas o próximo movimento de preços. Pode acontecer que o próximo movimento vá contra o nosso comércio em 70% dos casos, mas ainda vale a pena fazer um comércio. Isso acontece quando o preço finalmente vai para a direção certa, mas antes disso pode fazer alguns passos contra nós. Se atrasarmos o comércio por um passo de preço, não entraremos nos 30% mencionados das negociações, mas para isso aumentamos o resultado do passo de preço de 70% por um preço. Portanto, o critério é qual o valor mais alto: N * average_result ou 0.7 * N * (avergae_result + price_step).
Bela postagem. Se você quiser apenas brincar com alguma aprendizagem de máquinas, implementei uma ferramenta ML muito simples em python e adicionei uma GUI. É implementado para prever séries temporais.
Obrigado JCL Achei muito interessante o seu artigo. Gostaria de perguntar-lhe, a partir da sua experiência em negociação, onde podemos transferir dados históricos confiáveis de forex? Eu considero isso muito importante devido ao fato de o mercado Forex estar descentralizado.
Desde já, obrigado!
Não há dados de Forex realmente confiáveis, uma vez que todo corretor de Forex cria seus próprios dados. Todos eles diferem ligeiramente dependentes de quais provedores de liquidez eles usam. FXCM tem relativamente bom M1 e marca dados com poucas lacunas. Você pode baixá-lo com o Zorro.
Obrigado por escrever uma série tão grande de artigos JCL & # 8230; uma leitura completamente agradável!
Tenho que dizer, porém, que não considero as estratégias de aprendizado de máquinas baseadas em modelo e mutuamente exclusivas; Eu tive algum sucesso de OOS usando uma combinação dos elementos que você descreve.
Para ser mais exato, eu começo o processo de geração do sistema, desenvolvendo um & # 8216; tradicional & # 8217; modelo matemático, mas, em seguida, use um conjunto de algoritmos de aprendizagem de máquinas on-line para prever os próximos termos das várias séries temporais diferentes (e não o próprio preço) que são usadas dentro do modelo. As regras de negociação reais são então derivadas das interações entre essas séries temporais. Então, na essência, não estou apenas atirando cegamente os dados de mercado recentes em um modelo de ML em um esforço para prever a direção de ação de preço, mas sim desenvolver uma estrutura baseada em princípios de investimento sólidos para apontar os modelos na direção certa. Então, os dados minam os parâmetros e medem o nível de viés de mineração de dados como você também descreveu.
Vale a pena mencionar, no entanto, que eu nunca tive muito sucesso com o Forex.
De qualquer forma, a melhor sorte com sua negociação e mantenha os ótimos artigos!
Obrigado por publicar esta ótima série mini JCL.
Recentemente, estudei alguns últimos artigos sobre ML trading, profundamente aprendendo especialmente. No entanto, descobri que a maioria deles avaliou os resultados sem índice ajustado ao risco, ou seja, eles costumavam usar a curva ROC, PNL para suportar sua experiência, em vez de Sharpe Ratio, por exemplo.
Além disso, raramente mencionaram a frequência comercial nos resultados da experiência, tornando difícil avaliar a rentabilidade potencial desses métodos. Por que é que? Você tem boas sugestões para lidar com essas questões?
Os papéis ML normalmente visam uma alta precisão. A variação da curva de capital não é de interesse. Isso é justificado porque a qualidade de predição ML determina a precisão, e não a variação.
Claro, se você quer realmente negociar esse sistema, a variação e a retirada são fatores importantes. Um sistema com menor precisão e pior previsão pode de fato ser preferível quando é menos dependente das condições de mercado.
& # 8220; De fato, o método de mineração de dados mais popular e surpreendentemente lucrativo funciona sem redes neurais sofisticadas ou máquinas de vetor de suporte. & # 8221;
Você gostaria de nomear aqueles mais populares? surpreendentemente lucrativos. Então eu poderia usá-los diretamente.
Eu estava me referindo às estratégias de sopa de indicadores. Por razões óbvias, não posso divulgar detalhes de tal estratégia e nunca desenvolvi esses sistemas. Nós simplesmente codificamos. Mas eu posso dizer que chegar com uma sopa Indicadora rentável requer muito trabalho e tempo.
Bem, estou apenas começando um projeto que usa EMAs simples para prever o preço, ele apenas seleciona os EMAs corretos com base no desempenho passado e na seleção de algoritmos que fazem algum grau rústico de inteligência.
Jonathan. orrego@gmail oferece serviços como programador MT4 EA.
Obrigado pelo bom writeup. Na realidade, costumava ser uma conta de lazer.
Olhe complicado para mais entregues agradável de você!
Falando nisso, como podemos entrar em contato?
Há problemas a seguir com ML e com sistemas de negociação em geral baseados na análise de dados históricos:
1) Os dados históricos não codificam informações sobre futuros movimentos de preços.
O movimento futuro dos preços é independente e não está relacionado com o histórico de preços. Não há absolutamente nenhum padrão confiável que possa ser usado para extrair os lucros do mercado de maneira sistemática. Aplicar métodos ML neste domínio é simplesmente inútil e condenado ao fracasso e não vai funcionar se você procurar um sistema lucrativo. Claro que você pode ajustar a curva em qualquer período passado e criar um sistema lucrativo para isso.
A única coisa que determina o movimento dos preços é a demanda e a oferta e estes são muitas vezes o resultado de fatores externos que não podem ser previstos. Por exemplo: uma guerra explode em algum lugar ou outras grandes catástrofes ou alguém apenas precisa comprar uma grande quantidade de moeda estrangeira para algum negócio / propósito de investimento. Esse tipo de eventos causará mudanças significativas na estrutura de oferta de demanda do mercado FX. Como conseqüência, os preços começam a se mover, mas ninguém realmente se importa com a história de preços apenas sobre a execução das ordens recebidas. Um sistema de negociação automatizado só pode ser rentável se monitorar uma parcela significativa do mercado e levar em consideração a oferta e a demanda para tomar uma decisão comercial. Mas este não é o caso de nenhum dos sistemas que estão sendo discutidos aqui.
2) Corrida para o fundo.
Even if (1) wouldn’t be true and there would be valuable information encoded in historical price data, you would still face following problem: there are thousands of gold diggers out there, all of them using similar methods and even the same tools to search for profitable systems and analyze the same historical price data. As a result, many of them will discover the same or very similar “profitable” trading systems and when they begin actually trading those systems, they will become less and less profitable due to the nature of the market.
The only sure winners in this scenario will be the technology and tool vendors.
I will be still keeping an eye on your posts as I like your approach and the scientific vigor you apply. Your blog is the best of its kind – keep the good work!
One hint: there are profitable automated systems, but they are not based on historical price data but on proprietary knowledge about the market structure and operations of the major institutions which control these markets. Let’s say there are many inefficiencies in the current system but you absolutely have no chance to find the information about those by analyzing historical price data. Instead you have to know when and how the institutions will execute market moving orders and front run them.
Thanks for the extensive comment. I often hear these arguments and they sound indeed intuitive, only problem is that they are easily proven wrong. The scientific way is experiment, not intuition. Simple tests show that past and future prices are often correlated – otherwise every second experiment on this blog had a very different outcome. Many successful funds, for instance Jim Simon’s Renaissance fund, are mainly based on algorithmic prediction.
One more thing: in my comment I have been implicitly referring to the buy side (hedge funds, traders etc) not to the sell side (market makers, banks). The second one has always the edge because they sell at the ask and buy at the bid, pocketing the spread as an additional profit to any strategy they might be running. Regarding Jim Simon’s Renaissance: I am not so sure if they have not transitioned over the time to the sell side in order to stay profitable. There is absolutely no information available about the nature of their business besides the vague statement that they are using solely quantitative algorithmic trading models…
Thanks for the informative post!
Regarding the use of some of these algorithms, a common complaint which is cited is that financial data is non-stationary…Do you find this to be a problem? Couldn’t one just use returns data instead which is (I think) stationary?
Yes, this is a problem for sure. If financial data were stationary, we’d all be rich. I’m afraid we have to live with what it is. Returns are not any more stationary than other financial data.
Hello sir, I developed some set of rules for my trading which identifies supply demand zones than volume and all other criteria. Can you help me to make it into automated system ?? If i am gonna do that myself then it can take too much time. Please contact me at svadukia@gmail if you are interested.
Sure, please contact my employer at info@opgroup. de. They’ll help.
I have noticed you don’t monetize your page, don’t waste your traffic,
you can earn extra bucks every month because you’ve got high quality content.
If you want to know how to make extra $$$, search for: Mrdalekjd methods for $$$
Technical analysis has always been rejected and looked down upon by quants, academics, or anyone who has been trained by traditional finance theories. I have worked for proprietary trading desk of a first tier bank for a good part of my career, and surrounded by those ivy-league elites with background in finance, math, or financial engineering. I must admit none of those guys knew how to trade directions. They were good at market making, product structures, index arb, but almost none can making money trading directions. Por quê? Because none of these guys believed in technical analysis. Then again, if you are already making your millions why bother taking the risk of trading direction with your own money. For me luckily my years of training in technical analysis allowed me to really retire after laying off from the great recession. I look only at EMA, slow stochastics, and MACD; and I have made money every year since started in 2009. Technical analysis works, you just have to know how to use it!!
Machine Learning for Trading.
Artificial Intelligence (AI) and Machine Learning (ML) are quietly revolutionizing nearly all areas of our lives. Did you know the latest trading algorithms are using these technologies extensively?
You might be surprised to learn that Machine Learning hedge funds already significantly outperform generalized hedge funds, as well as traditional quant funds, according to a report by ValueWalk. ML and AI systems can be incredibly helpful tools for humans navigating the decision-making process involved with investments and risk assessment.
The impact of human emotions on trading decisions is often the greatest hindrance to outperformance. Algorithms and computers make decisions and execute trades faster than any human can, and do so free from the influence of emotions.
There are numerous different types of algorithmic trading. A few examples are as follows:
Trade execution algorithms, which break up trades into smaller orders to minimize the impact on the stock price. An example of this is a Volume Weighted Average Price (VWAP) strategy Strategy implementation algorithms which make trades based on signals from real-time market data. Examples of this are trend-based strategies that involve moving averages, channel breakouts, price level movements and other technical indicators. Stealth/gaming algorithms that are geared towards detecting and taking advantage of price movements caused by large trades and/or other algorithm strategies. Arbitrage Opportunities. An example would be where a stock may trade on two separate markets for two different prices and the difference in price can be captured by selling the higher-priced stock and buying the lower priced stock.
When algorithmic trading strategies were first introduced, they were wildly profitable and swiftly gained market share. In May 2017, capital market research firm Tabb Group said that high-frequency trading (HFT) accounted for 52% of average daily trading volume. But as competition has increased, profits have declined. In this increasingly difficult environment, traders need a new tool to give them a competitive advantage and increase profits. The good news is that tool is here now: Machine Learning.
Machine learning involves feeding an algorithm data samples, usually derived from historical prices. The data samples consist of variables called predictors, as well as a target variable, which is the expected outcome. The algorithm learns to use the predictor variables to predict the target variable.
Machine learning offers the number of important advantages over traditional algorithmic programs. The process can accelerate the search for effective algorithmic trading strategies by automating what is often a tedious, manual process. It also increases the number of markets an individual can monitor and respond to. Most importantly, they offer the ability to move from finding associations based on historical data to identifying and adapting to trends as they develop. If you can automate a process others are performing manually; you have a competitive advantage. If you can increase the number of markets you’re in, you have more opportunities. And in the zero-sum world of trading, if you can adapt to changes in real time while others are standing still, your advantage will translate into profits.
There are multiple strategies which use machine learning to optimize algorithms, including: linear regressions, neural networks, deep learning, support vector machines, and naive Bayes, to name a few. And well-known funds such as Citadel, Renaissance Technologies, Bridgewater Associates and Two Sigma Investments are pursuing machine learning strategies as part of their investment approach. At Sigmoidal, we have the experience and know-how to help traders incorporate ML into their own trading strategies.
Our case study.
In one of our projects, we designed an intelligent asset allocation system that utilized Deep Learning and Modern Portfolio Theory. The task was to implement an investment strategy that could adapt to rapid changes in the market environment.
The base AI model was responsible for predicting asset returns based on historical data. This was accomplished by implementing Long Short-Term Memory Units, which are a sophisticated generalization of a Recurrent Neural Network. This particular architecture can store information for multiple timesteps, which is made possible by a Memory Cell. This property enables the model to learn long and complicated temporal patterns in data. As a result, we were able to predict the asset’s future returns, as well as the uncertainty of our estimates using a novel technique called Variational Dropout.
In order to strengthen our predictions, we used a wealth of market data, such as currencies, indices, etc. in our model, in addition to the historical returns of relevant assets. This resulted in over 400 features we used to make final predictions. Of course, many of these features were correlated. This problem was mitigated by Principal Component Analysis (PCA), which reduces the dimensionality of the problem and decorrelates features.
We then used the predictions of return and risk (uncertainty) for all the assets as inputs to a Mean-Variance Optimization algorithm, which uses a quadratic solver to minimise risk for a given return. This method determines the allocation of assets, which is diverse and ensures the lowest possible level of risk, given the returns' predictions.
Combining these models created an investment strategy which generated an 8% annualized return, which was 23% higher than any other benchmark strategy tested over a two year period. Contacte-nos para saber mais.
AI Strategies Outperform.
It is difficult to find performance data for AI strategies given their proprietary nature, but hedge fund research firm Eurekahedge has published some informative data. The chart below displays the performance of the Eurekahedge AI/Machine Learning Hedge Fund Index vs. traditional quant and hedge funds from 2018 to 2018. The Index tracks 23 funds in total, of which 12 continue to be live.
Eurekahedge notes that:
“AI/machine learning hedge funds have outperformed both traditional quants and the average hedge fund since 2018, delivering annualized returns of 8.44% over this period compared with 2.62%, 1.62% and 4.27% for CTA’s, trend-followers and the average global hedge fund respectively.”
Eurekahedge also provides the following table with the key takeaways:
Table 1: Performance in numbers – AI/Machine Learning Hedge Fund Index vs. quants and traditional hedge funds.
AI/machine learning hedge funds have outperformed the average global hedge fund for all years excluding 2018.
Barring 2018 and 2018, returns for AI/machine learning hedge funds have outpaced those for traditional CTA/managed futures strategies while underperforming systematic trend following strategies only for the year 2018 when the latter realized strong gains from short energy futures.
Over both the five, three and two year annualized period, AI/machine learning hedge funds have outperformed both traditional quants and the average global hedge fund delivering annualized gains of 7.35%, 9.57%, and 10.56% respectively over these periods.
AI/machine learning hedge funds have also posted better risk-adjusted returns over the last two and three year annualized periods compared to all peers depicted in the table below, with Sharpe ratios of 1.51 and 1.53 over both periods respectively.
While returns have been more volatile compared to the average hedge fund (compare with Eurekahedge Hedge Fund Index ), AI/machine learning funds have posted considerably lower annualized volatilities compared with systematic trend following strategies.
Eurekahedge also notes that the AI/machine learning hedge funds are “negatively correlated to the average hedge fund (-0.267)” and have “zero-to-marginally positive correlation to CTA/managed futures and trend following strategies,” which point to the potential diversification benefits of an AI strategy.
The above data illustrate the potential in utilizing AI and Machine Learning in trading strategies. Fortunately, traders are still in the early stages of incorporating this powerful tool into their trading strategies, which means the opportunity remains relatively untapped and the potential significant.
Here is an example of an AI application in practice.
Arizona Financial Text system (AZFinText)
Imagine a system that can monitor stock prices in real time and predict stock price movements based on the news stream. That’s precisely what AZFinText does. This article recounts an experiment that used Support Vector Machine (SVM) to trade S&P-500 and yielded excellent results. Below is the table that shows how it performed relative to the top 10 quantitative mutual funds in the world:
Strategy using Google Trends.
Another experimental trading strategy used Google Trends as a variable. There are a plethora of articles on the use of Google Trends as a sentiment indicator of a market.
The experiment in this paper tracked changes in the search volume of a set of 98 search terms (some of them related to the stock market). The term "debt" turned out to be the strongest, most reliable indicator awhen predicting price movements in the DJIA.
Below is a cumulative performance chart. The red line depicts a "buy and hold" estratégia. Google Trends strategy (blue line) massively outperformed with a return of 326%.
Can I learn ML myself?
Applying Machine Learning to trading is a vast and complicated topis that takes the time to master. But if you're interested, as a starting point we recommend:
Once you're familiar with these materials, there is alo a popular Udacity course on hot to apply the basis of Machine Learning to market trading.
If you want to speed the learning process up, you can hire a consultant. Do make sure to ask tough questions before starting a project .
Or, you can schedule a short call with us to explore what can be done.
I need more specific examples applicable in my industry.
By incorporating Machine Learning into your trading strategies, your portfolio can capture more alpha. But implementing a successful ML investment strategy is difficult – you will need extraordinary, talented people with experience in trading and data science to get you there. Let us help get you started.
Looking for Machine Learning consulting?
Compartilhe esta publicação.
Get fresh insights on getting the data to work!
Subscribe to Sigmoidal updates.
My Experience with Docker Swarm - How to know when you might need it.
In this post I'm going to analyze the role of Docker in each stage of the application lifecycle and…
Deep Learning for Computer Vision - going beyond image classification and regression.
Since 2018 when AlexNet appeared and broke almost all the records in image classification contests, the landscape of a…
Algorithmic Trading Strategies using Deep Learning.
Algorithmic trading strategies are typically built using human intuition in combination with back-testing, and get continuously tuned over time. They depend on the market price curves of securities, derivatives, currencies, or commodities along with one or more indicators such as moving average or RSI. Maximising profit is usually a function of trial and error.
This white paper explores how machine learning, in particular deep learning, can be employed to improve algorithmic trading strategies. Using deep belief networks (DBN), we attempt to predict the case when the price will have a significant change in the near future and build the trading strategy based on this. Backtesting shows that significant profit improvements can be achieved using this technique. The paper also describes how the DBN can be trained with maximum performance using a combination of CPUs and GPUs.
Redes neurais para negociação algorítmica. Previsão de séries temporais simples.
ACTUALIZAÇÃO IMPORTANTE:
Esta é a primeira parte dos meus experimentos em aplicação de aprendizado profundo para financiar, em particular para negociação algorítmica.
Eu quero implementar o sistema de negociação a partir do zero com base apenas em abordagens de aprendizado profundo, então, para qualquer problema que temos aqui (previsão de preços, estratégia de negociação, gerenciamento de riscos), usaremos diferentes variações de redes neuronais artificiais (RNAs) e veremos o quanto elas podem lide com isso.
Agora eu planejo trabalhar nas próximas seções:
Previsão de séries temporais com dados brutos Previsão de séries temporais com recursos personalizados Otimização de hiperparâmetros Implementação de estratégia de negociação, backtesting e gerenciamento de riscos Estratégias de negociação mais sofisticadas, reforço de aprendizagem Indo ao vivo, corretores API, ganhando (l̶o̶s̶i̶n̶g̶) dinheiro.
Eu recomendo que você verifique o código e o IPython Notebook neste repositório.
Nesta primeira parte, quero mostrar como MLPs, CNNs e RNNs podem ser usados para a previsão de séries temporais financeiras. Nesta parte, não vamos usar nenhuma engenharia de recursos. Vamos considerar o conjunto de dados históricos dos movimentos dos preços do índice S & P 500. Temos informações de 1950 a 2018 sobre preços abertos, fechados, altos e baixos para todos os dias do ano e volume de negócios. Primeiro, tentaremos apenas prever fechar o preço no final do próximo dia, em segundo lugar, tentaremos prever o retorno (preço fechado - preço aberto). Baixe o conjunto de dados do Yahoo Finance ou deste repositório.
Definição do problema.
Consideraremos o nosso problema como 1) problema de regressão (tentando prever exatamente fechar o preço ou retornar no dia seguinte) 2) problema de classificação binária (o preço aumentará [1; 0] ou abaixo [0; 1]).
Para treinar NNs, usaremos framework Keras.
Primeiro vamos preparar nossos dados para treinamento. Queremos prever o valor de t + 1 com base em informações de N dias anteriores. Por exemplo, tendo preços próximos dos últimos 30 dias no mercado, queremos prever, que preço será amanhã, no 31º dia.
Utilizamos as primeiras 90% das séries temporais como conjunto de treinamento (considere-a como dados históricos) e 10% como conjunto de testes para avaliação do modelo.
Aqui é exemplo de carregamento, dividindo em amostras de treinamento e pré-processamento de dados de entrada brutos:
Problema de regressão. MLP.
Será apenas um perceptron de 2 camadas escondidas. O número de neurônios escondidos é escolhido de forma empírica, vamos trabalhar na otimização de hiperparâmetros nas próximas seções. Entre duas camadas ocultas, adicionamos uma camada de Saída para evitar a sobreposição.
O importante é Dense (1), Activation ('linear') e 'mse' na seção de compilação. Queremos um produto que possa estar em qualquer intervalo (prevemos valor real) e nossa função de perda é definida como erro quadrático médio.
Vamos ver o que acontece se apenas passarmos pedaços de preços próximos de 20 dias e prever o preço no 21º dia. Final MSE = 46.3635263557, mas não é uma informação muito representativa. Abaixo está um gráfico de previsões para os primeiros 150 pontos do conjunto de dados de teste. A linha preta é dados reais, um azul - previsto. Podemos ver claramente que nosso algoritmo não é nem mesmo de perto, mas pode aprender a tendência.
Vamos dimensionar nossos dados usando o método de sklearn pré-processamento. Escala () para ter nossa série zero de tempo e variância unitária e treinar o mesmo MLP. Agora temos MSE = 0.0040424330518 (mas está em dados dimensionados). No gráfico abaixo, você pode ver as séries temporais reais escaladas (preto) e a nossa previsão (azul) para ela:
Para usar este modelo no mundo real, devemos retornar às séries temporais não escaladas. Podemos fazê-lo, multiplicando ou preditivo por desvio padrão de séries temporais que usamos para fazer predição (20 etapas de tempo não escalonadas) e adicione seu valor médio:
MSE neste caso é igual a 937.963649937. Aqui está o enredo de previsões restauradas (vermelho) e dados reais (verde):
Não está mal, não é? Mas vamos tentar algoritmos mais sofisticados para esse problema!
Problema de regressão. CNN.
Eu não vou mergulhar na teoria das redes neurais convolutivas, você pode verificar esses recursos incríveis:
Vamos definir a rede neural convolucional de 2 camadas (combinação de camadas de convolução e max-pooling) com uma camada totalmente conectada e a mesma saída que anteriormente:
Vamos verificar resultados. MSEs para dados escalados e restaurados são: 0.227074542433; 935.520550172. As parcelas estão abaixo:
Mesmo olhando para MSE em dados escalados, esta rede aprendeu muito pior. Provavelmente, uma arquitetura mais profunda precisa de mais dados para o treinamento, ou simplesmente é superada devido ao número muito alto de filtros ou camadas. Vamos considerar esta questão mais tarde.
Problema de regressão. RNN.
Como arquitetura recorrente, eu quero usar duas camadas LSTM empilhadas (leia mais sobre LSTM aqui).
As parcelas das previsões estão abaixo, MSEs = 0.0246238639582; 939.948636707.
A previsão da RNN se parece mais com o modelo médio móvel, não pode aprender e prever todas as flutuações.
Então, é um resultado pouco esperável, mas podemos ver que os MLPs funcionam melhor para esta previsão de séries temporais. Vamos verificar o que acontecerá se nós passarmos de regressão para problema de classificação. Agora, usaremos os preços não fechados, mas o retorno diário (fechar preço-preço aberto) e queremos prever se o preço fechado é maior ou menor do que o preço aberto com base nos últimos 20 dias de devolução.
Problema de classificação. MLP.
O código é alterado um pouco - alteramos nossa última camada Densa para ter saída [0; 1] ou [1; 0] e adicione a saída softmax para esperar resultados probabilísticos.
Para carregar saídas binárias, mude a linha seguinte do código:
Também mudamos a função de perda para cross-entopy binário e adicionamos métricas de precisão.
Oh, não é melhor do que adivinhar aleatoriamente (50% de precisão), vamos tentar algo melhor. Confira os resultados abaixo.
Problema de classificação. CNN.
Problema de classificação. RNN.
Conclusões.
Podemos ver que o tratamento da previsão de séries temporárias financeiras como problema de regressão é uma abordagem melhor, pode aprender a tendência e os preços próximos do real.
O que foi surpreendente para mim, que MLPs estão tratando dados de seqüência melhor como CNNs ou RNNs que deveriam funcionar melhor com séries temporais. Explico isso com conjunto de dados bastante pequeno (
Selos de tempo de 16k) e escolha de hiperparâmetros fofos.
Você pode reproduzir resultados e melhorar usando o código do repositório.
Eu acho que podemos obter melhores resultados em regressão e classificação usando diferentes recursos (não apenas séries temporais escalonadas) como alguns indicadores técnicos, volume de vendas. Também podemos tentar dados mais freqüentes, digamos carrapatos minuto a minuto para ter mais dados de treinamento. Todas essas coisas que eu vou fazer depois, então fique atento :)
Ao bater palmas mais ou menos, você pode nos indicar quais são as histórias que realmente se destacam.
Alex Honchar.
máquinas de ensino e raphamento.
Mundo de aprendizagem de máquinas.
O melhor sobre Aprendizado de Máquinas, Visão de Computador, Aprendizagem Profunda, Processamento de linguagem natural e outros.
Trading strategies using deep machine learning
Thomas Wiecki mentioned this a couple of years ago (he omitted the spaces, so look for "ApplyingdeepLearningtoEnhanceMomentumTradingStrategiesinStocks) in the thread on trading ideas.
Takeuchi, L., Lee, Y. (2018). Applying Deep Learning to Enhance Momentum Trading Strategies in Stocks .
We use an autoencoder composed of stacked restricted Boltzmann machines to extract features from the history of individual stock prices. Our model is able to discover an enhanced version of the momentum effect in stocks without extensive hand-engineering of input features and deliver an annualized return of 45.93% over the 1990-2009 test period versus 10.53% for basic momentum.
Can anyone with a data science head create a Q version of this?
Utterly fascinating. Quite impossible for me to comment at this stage but there are a great number of questions I have to which I will need to search for answers. For me the most interesting sentence is as follows:
our model is not merely rediscovering.
known patterns in stock prices, but going beyond what.
humans have been able to achieve.
Is it REALLY possible for deep learning to take a simple set of returns and improve on the "forecasts" made by the application of a simple momentum strategy? This papers seems to indicate that that is the case.
Having read the paper two or three times I am still unclear exactly what each "stack" actually does but no doubt I will eventually tumble upon some sort of conclusion.
Happily, this paper comes at a time when I had decided to retire from the incredibly boring research I have done to date. I have decided to "learn" AI and deep learning. Or at least to attempt to.
I am far from certain that it has any application to the long term prediction of stock prices but this article seems to suggest otherwise. I look forward to finding out whether this research has indeed discovered Eldorado or whether other factors are in play which will make this line of research as fruitless as most others in the financial markets.
Training a deep neural net on quantopian data would be challenging unless you could run the notebooks / algorithms on machines with powerful GPUs attached.
If you have offline access to relevant trading data, you could train a net from that on non-quantopian machines and then translate the resulting net to scipy for execution in the quantopian framework.
Very interesting to read some of the other papers from Stanford on deep learning applied to markets. The referenced paper claims just over a 50% classification accuracy as to whether trades will end up winners or losers the following month. Just using price as the input.
The model is correct 53.84% of the time when it predicts class 1 and a.
somewhat lower 53.01% of the time when it predicts class 2.
Consider that a typical un-adorned old fashioned trend following strategy typically provides 40% winning trades and profits by running winners and cutting losers.
If it did work in 2018 would it work any more? I would think banks and brokerage houses would have armies of PhDs writing code like that.
Many people think that way. And I know what you mean. But if it is true then you may as well give up altogether. As may Quantopian. I have no idea whether it still works but I intend to replicate the study. All I am sure of is my own ignorance.
There was a thread a while back where some one tried this using one of machine learning libraries on a single stock:
Predicting Price Movements via Regimes and Machine Learning.
It may be a good place to start.
It runs quite slow. To speed things up you may want to download price data from EOData (or other site) and work from that on your own machine.
Anthony, I found this Python machine learning code (and associated MOOC course) and thought you might find it useful: johnwittenauer/machine-learning-exercises-in-python-part-1/
Another group has posted even better accuracy numbers (82% vs 53%). Not sure on the quality though.
You probably could just reach out to the authors about their implementation.
RBMs can be done in R with deepnet.
Interessante. The methodology in the Springer link is also based on price only as the input, although perhaps one should not be surprised by the vastly greater accuracy: this is forecasting 1 minute ahead whereas the Lee project forecasts one month ahead.
I'm concentrating on Python, Keras and Theano. as well as skLearn.
Is the paper freely available somewhere?
@Anthony - Yeah, some differences implementation. Python can make calls to R if need. Tried using PDNN for python?
My current knowledge is infantile. I'm beginning from scratch on the whole topic and building ANNs from scratch for the experience using some Noddy textbooks. I'm interested in the whole field so looking at whatever ML techniques could be useful including RBMs.
My suspicion is that so far as longer term investment is concerned this will all turn out to be a waste of time. Or rather that it will not provide me with risk adjusted returns better than the simple 50/50 system I outlined on my website.
But we will see. I am as keen to shoot the lights out as anyone else but know from experience that these ventures usually turn out rather differently than one might have hoped!
When I am a bit further down the line I will contact Takeutchi Lee and see what he did further (if anything) with the strategy outlined. I wonder if he actually traded it? Either for himself or his employers.
@Patrick: Thank you.
Gosh, I just noticed this in the referenced paper:
The data used for training and testing are the AAPL tick-by-tick transactions.
from September to November of 2008.
1 stock tested for 3 months! I'm surprised they did not take it a bit further than that but who knows perhaps the resulst would have been the same for different stocks and periods?
Hi Anthony and group. Two issues:
How many trials were involved in achieving this outperformance? It is not clear. Did they adjust parameters of the RBM until they got the desired result? Besides look-ahead bias which they claim not to be an issue, there is also data-snooping and selection bias. In fact, selection bias can be quite large.
The paper was published at the end of 2018 but the test sample sample ended in 2009. There is no reason for that except in the case that the outperformance came from short-selling during the 2000 and 2008 bear markets, in which case it vanished after 2009.
Claims of outperformance of momentum by Glabadanidis were recently debunked by Prof. Zakamulin after he showed there was look-ahead bias in calculations. More about this and other issues, also regarding special market conditions that give rise to high t-stats, in my recent paper, papers. ssrn/sol3/papers. cfm? abstract_id=2810170.
Has anyone examined the technique proposed by Lee et al.? I'm having a go (using free Quandl data) but I'm finding it difficult to follow. I can handle the ML aspects. But I'm not quite sure how they are packaging the data.
I think it's something like this:
For a given moment in time for a particular stock we can construct a (labelled) training item by using the previous 13 months worth (and the subsequent 1 months worth) of daily data for that stock.
We use this data to construct 12 monthly cumulative returns ending a month short of our moment. So I'm guessing just add up daily Adj_Close prices & spit out the value every 30 or so passes. Agora fica interessante. They do the same thing for every other stock at this moment, and get a z-value for our stock over this set (i. e. # of standard deviations from the mean). So the movement of this z-value is showing the growth of this particular stock relative to the whole market. Since the algorithm is going to be invested a certain amount of money in the market, and just shifting it between stocks, this is what you want!
Looks like they do this for each of the 12 monthly cumrets.
And then they do the same process for the previous 30 days.
That actually makes a lot of sense because you want to be feeding in Data with mean 0 round about the (-1, +1) range into your NN.
So that covers input data. (there is one extra input that is a 'start of year' flag. But a complete supervisor training item also requires an associated output value. It looks as though they are just using whether that particular stock went up in the ensuing month. Although I don't understand their language, they talk about 'above the median'. And median of what. It seems a really weird way of doing it. Why not just look at whether the price one month later is higher or lower than the price at this particular moment & output 1 or 0 accordingly? I think that's what I will do as I don't understand what they're saying.
Then I can only assume that everything is shunted forwards by a single day at the algorithm is repeated to generate another sample.
It seems strange to me that they don't make use of daily volume.
I actually had a go at implementing it on my local machine in TensorFlow using yahoo data I downloaded. "Above the median" just means "above the median of percentage returns for every stock for that month". Just looking at whether the price were higher or lower in absolute terms for the month (rather than whether it were higher or lower relative to all other stock movements) would probably be less effective. They're consistent in using this relative approach, as all return data features are z-scored for each month time-step.
I've backtested in zipline, and so far I've not been able to duplicate their stellar results, but I'm still hopeful as currently my code doesn't use an RBM-based auto-encoder (I'll re-code this part when I get time) and I'm also not training either the auto-encoder or full network for very many cycles on my single-GPU machine. Also I think I could add historical data for now-defunct stocks (rather than just currently tradable ones that I'm using as my "universe") that would get better feature-extraction results in the auto-encoder phase. It wasn't clear to me whether they did this or not. Of course, this old historical data would have to come from another source (not free yahoo data). They're training with data from 1965-1989, which just isn't a lot of data for a deep neural net (and probably way to old for the resultant model to have any practical value for the trading in the present).
By the way, these guys seemed to be able to reproduce the white-paper results with the same input features and a slightly different machine learning model: math. kth. se/matstat/seminarier/reports/M-exjobb15/150612a. pdf.
So roughly 53℅ correct prediction on the test? In 53℅ of cases the network predicted stocks which ended up in the top half of returns in the following period? So very similar .
No backtest provided but. as I say much better than many long term TF systems.
Yeah, supposedly 52.89% in the paper I referenced, though I'm not getting these results in my own code (yet). Yeah it's too bad there's no backtest data provided. This algorithm is definitely long-term, low frequency (you run it once per month, and hold your positions for the entire month) though it could certainly be modified to be shorter term. I intend to play around with it using minute data too, eventually and different trade frequencies on the monthly/daily data.
The Takeichi paper didn't mention vol and drawdown either. Likely to be pretty high I imagine. Also all sorts of other problems like a bias depending on the reallocation date and god knows what else. But interesting stuff. Personally a month holding period would not worry me if the return was really that good. But, to be honest, after years of fooling myself I am pretty jaundiced about backtesting whatever system is used.
In my humble experience annualized returns above 15% are either due to look-ahead bias or over-fitting. The market does not allow these high returns because a leveraged trader would own it longer-term. So these academic researchers are being fooled by backtesting and its most serious caveat which is the "no impact" on prices.
If you take a look at my Aug 124 post above, there is a mention of the papers by Glabadanidis on price series momentum that were declared seminal with returns in the order of 15% only to be refuted recently by Zakamulin for being the result of look-ahead bias. We are talking about simple algos here, yet the implemented code in excel has look-ahead bias. Imagine what can go wrong with complicated ML algos in that domain. I use the geometric equity curve test. If it holds, then the probability of a flaw in backtest is > 95%.
@Michael Harris, you may be right, and thanks for trying to save me from myself and the impractical academics, but I decided I'd be happy reproducing these returns even if flawed. At that point if they seemed too-good-to-be-true, I'd try to pick them apart to find bias/snooping/over-fitting. The main point for me was really an exercise in learning TensorFlow and applying deep learning techniques to financial time-series data. I do believe there are patterns to be teased out of this kind of data using the deep learning approach, though maybe the momentum-based model that this particular ML algorithm produces isn't ultimately going to be profitable. The great thing about deep neural networks is that once you have the basic data flow down and have the network structure declared it's easy to feed it different data that you think might be predictive and produce a model with completely different behavior. It's also relatively easy to modify the network structure, and very easy to tweak params to see if they yield better test results, though as you mentioned, if done improperly I understand there is risk of over-fitting. I still have a lot to learn about the gotchas, so thanks for the words of warning.
@Justin Weeks, maybe you misunderstood me, I did not comment on your work and efforts but on academic papers with results that cannot be replicated and even contain serious errors, assumption and demonstrate lack of understanding of markets and trading.
If you pay close attention to the results of that paper, the following issues are present:
Repeated trials until the authors get a good result. This introduces data-snooping bias. They do not adjust their t-stat for that which shows lack of understanding of the perils of data-mining.
Bulk of gains are between 1990 and 2001, probably a long over-fit during the strongest uptrend in stock market history and than a short over-fit during the dot com crash.
Authors do not report important metrics, such as max drawdown, Sharpe ratio and payoff ratio.
Unfortunately, the academic environment knows how to trick company executives with promises of high returns and authors of similar papers get high paying positions and before they are fired they accumulate good wealth at the expense of honest analysts who will never report unrealistic annual return figures and will apply a reality check to reduce data-mining bias. These honest people have no impressive results to show but only reality and they will never pass thought the door of a large investment bank or hedge fund.
The whole paper was a demonstration of how one can use ML to over-fit data and generate unrealistic returns while obscuring the facts.
Oh god, you really should listen to Michael. He is so damn right. I'm sitting here penning another book - my foolish publishers came back for more. I wanted to have an entire first section on what NOT to do and had written quite a few chapters on the foolishness of relying on back testing in probabilistic trading.
The publishers askme me not to: readers only want to hear what DOES work apparently.
I am actually convinced that ML is a suitable tool for trend following but have absolutely no doubt that a 45% annual return is a fool's quest. Contrary to Michael I do believe in trends (in stocks at least) although even there I have been tricked and mislead in the past by over fitting.
After 30 years in the markets, 15 of those spent largely on systematic trading in one way or another, I deeply cynical. The hedge fund world mostly makes money for the fund managers who walk off with huge fees after their funds collapse. They then start another.
It seems we have two sides to the argument: machine learning experts that know little of real-world trading, and real-world traders lacking expertise in machine learning.
I've got addicted to ML. If I can develop profitable trading algorithms, great! If not, nevermind, there are plenty of decent looking fallback options.
I don't see any suggestion of intellectual dishonesty in that Lee paper, however I do agree it is annoying that papers are allowed to publish results without supporting code.
If anyone is interested in chatting ML, do pop into ##machinelearning on IRC Freenode.
Justin -- thanks for that reply, and the link!
PS I looked through the paper Patrick linked (link. springer/chapter/10.1007/978-3-319-42297-8_40), it look very sketchy. However the original paper appears robust as far as I can see. I will continue to attempt to replicate it.
"machine learning experts that know little of real-world trading, and real-world traders lacking expertise in machine learning."
This alludes to a false dichotomy. Real world trading can be accomplished via a variety of methods including ML. Lacking ML experience may not be a disadvantage in many cases as it can save many exercises in futility.
"I don't see any suggestion of intellectual dishonesty in that Lee paper"
Someone would expect university researchers to be familiar with data-mining and data-snooping bias. The paper was about p-hacking with ML. This is disturbing for an academic paper. The exact number of trials to get to final result should have been reported. But this does not equate to intellectual dishonesty but to naive application of ML.
Good point about code but I suspect that even if you had the exact code you would still not being able to replicate the results due to stochasticity.
you would still not being able to replicate the results due to stochasticity.
You ought to be able to get close. In deep learning it seems random numbers are usually only used for generation of the initial weights. although I am one of those with much experience in markets and little in ML!
These are error rates from five successive runs of a Multilayer perceptron with exact same parameters on the exact same data from a project I am working for a client.
Yes but I wonder how those differences translate into CAGR in a trading system? I wonder whether it makes so much difference that some runs predict say 51℅ of stocks correctly each month or 52.4℅? Know the vagaries of back testing I suspect not?
ML is just fitting a non-linear equation with 10s' to 1000's of undetermined coefficients to data.
It seems like it would be impossible to avoid overfitting. In an upward or downward trending market, I suspect the ML algorithms.
would just learn momentum rules.
If ML is going to work I think you will need to apply it to multiple stocks at once, throw in fundamental data, economic factors etc.
Then perhaps it can discover a pattern in a set of data too big for a human to look at.
The human brain is really good at recognizing patterns. If there were a pattern in the price history of a single stock.
I think you would see it.
Just observing that a key part of the Takeuchi/Lee paper is to "stationarize" the data by turning it into a cross-sectional format.
"we compute a series of 12 cumulative returns using the monthly returns and 20 cumulative returns.
using the the daily returns. We note that price momentum.
is a cross-sectional phenomenon with winners.
having high past returns and losers having low past returns.
relative to other stocks. Thus we normalize each.
of the cumulative returns by calculating the z-score relative.
to the cross-section of all stocks for each month.
If the statistics isn't stationary, the model will not converge or if it manages to converge (mathematically) it's not going to be very useful.
@David, I think they just kept on trying things until they got an impressive result. This is the definition of data-mining bias mainly driven by data-snooping. Nowhere in their paper there is a reference to data-mining bias.
@Michael, data snooping is definitely a possibility. However, the set-up seems quite plausible for fairly good results.. maybe not 50% returns but maybe up to 20% in a "normal" ano. I know you spoke of 15% but I am optimistic perhaps naively.
Normal year: the paper didn't talk about more interesting things such as (macro) regime switching that might affect the test results. For instance momentum behaviour can be wildly different in the last quarter of 2008 vs. second through fourth quarter of 2009. If your test covers or misses 2008, it could change results.
A likely place data-snooping gets into the set-up (unless the authors actually kept trying with different setup) is the hold-out cross validation portion. In my experience this is where "leakage" can inadvertently be introduced into the system. By leakage I mean a leakage of future data. The authors never provided the details on the hold-out x-val but if they were not careful with how they created the test set or sets for the hold-out cross-validation, they probably committed the same mistakes in training the finished product.
Here's a Kaggle page on leakage:
From another platform's CEO:
[Many of those algorithms were developed by students using sophisticated machine learning methods like neural networks. “I’m impressed by the quality and stability of the trading algorithms". ]
Deep learning appears very important to stay competitive.
"If you have offline access to relevant trading data, you could train a net from that on non-quantopian machines and then translate the resulting net to scipy for execution in the quantopian framework."
Is it that, I could execute in the quantopian framework but would be unable to join the contest? I have the relevant data. I am looking for ways to get some paper trade track record. I could use Interactive Brokers' paper trading but it is costly to have many IB accounts.
Greg - thanks for the info.
"It runs quite slow. To speed things up you may want to download price data from EOData (or other site) and work from that on your own machine."
After working with outside data and own machine, is there any short cut to change back the codes to upload back smoothly to quantopian?
"[Many of those algorithms were developed by students using sophisticated machine learning methods like neural networks. “I’m impressed by the quality and stability of the trading algorithms". ]"
But the assumption is that he does not know the algorithms. or am I missing something.
Maybe the next market regime change will sort things out.
[deleted - see below post from Antony]
"Next market regime change", you mean, when some platforms cannot survive? Very interesting anyway.
I mean when market dynamics change, all the over-fitted ML systems will fail.
More information about the significance problem can be found in my paper: papers. ssrn/sol3/papers. cfm? abstract_id=2810170.
For now the impact of these competitions is small. Market regime changes are driven by structural changes (algo trading in the late 1990s, decimalization, then HFT, etc.). In my opinion ensemble results are random priceactionlab/Blog/2018/09/data-science/
There is no way of distinguishing a low log loss due to multiple trials from a statistical significant one. These competitions are doomed in my opinion as more entrants mean further convergences of the sample mean to 0 true mean. Plus they have short-term risk of ruin which is uncontrollable, although small. The key to profits is identifying one or two robust features for the current regime and use those in simple algo. All else translates to more bias, more noise, more risk.
I think this thread has drifted off topic. If that is the case, could those responsible please create new threads & migrate accordingly? I would like to remain subscribed to this thread but only receive email notifications that pertain to the original subject.
I can implimentation that, working on Indian market, my interest is more on minute or five minute data. Also there can be far better use of deepnet if you combine this along with self learned patterns.
Anybody has experience on how to put the trained network into production? To be more specific, how to save the trained model and use it in the real time trading environment. Obrigado.
Just doing that with my own machine learning algos on the VIX futures contracts. I will report back when done. But I won't be using it on Q or drafting it in Q since I use daily prices, futures contracts and a different python back testing engine.
I've been looking to back-test this since a long time. Finally, I took a stab at it. Here are my results (and settings):
Total no. of tickers: 2,585.
Exchange: NYSE and NASDAQ.
Date range: 2018-02-21 to 2018-11-29.
Business days: 1,203.
Train data: From start until 2018-12-31.
Test data: From 2018-01-01 to end.
Neural Network (Encoder-decoder)
• Architecture o (#nodes in each hidden layers): (33 i/p)-40-4-40-(33 o/p)
o Activation function for hidden layers: ReLu.
o Activation function for output: Linear.
• Optimization o batch_size=100,000.
o Optimizer: Adam (learning rate: 0.001)
o Loss function: mse.
• Performance (on training set) o Loss after 100 epochs = 0.1505.
Neural Network (Classifier)
• Architecture o (#nodes in each hidden layers): (4 i/p)->20->(1 o/p)
o Activation function for hidden layers: ReLu.
o Activation function for output: Sigmoid.
• Optimization o batch_size=100,000.
o Optimizer: Adam (learning rate: 0.01)
o Loss function: binary_crossentropy.
o Regularization: 40% dropout in hidden layer.
• Performance (on training set) o Loss after 100 epochs = 0.6926.
o Accuracy (classification rate): 0.5141.
• Performance (on test set) o Accuracy (classification rate): 0.4844.
• Return (long top decile and short bottom decile) = -1.66% (annualized).
I used Quandl data (EOD dataset) to construct the 13 features as suggested in the paper.
I used different learning rates and regularization approaches but, results do not differ drastically. Interstingly, a naive approach to go long (on every stock) in given period yields +19.34% return. This is not surprising since the test period is 2018, and the market grew at an equivalent rate.
Looking forward to your thoughts.
I like your blogs but I think you are missing something for ML algo now. It can be adaptive if you are using rolling window with weights to retrain. That is the same process as we human being relearning the new environment. DNN may need more data but other ML algos might still be useful. The method in the paper might have "overfitted" the strategy in picking up the network architecture but as they are not directly optimizing on the final PnL I think the "overfitting" problem would be less severe than the normal trading system optimization on the final PnL/Sharpe/Sortino.
I have carried out similar experiments on US stocks and I think your training size is a little bit too small. Nevertheless, the system is not doing very well since 2018 in my setups even if I have used cross-validation to tune the nn/ML structure. The best period in my test period(2000-2017) was right after the tech bubble which corroborates figure 4 in the Stanford paper. Post-2000, my monthly return is much lower(
20% CAGR, 1.6 Sharpe, 16% MaxDD) than the # reported in the paper partly because of using only post-2000 in the test sample.
Adding more data may not help, since.
Currently, training data has close to 3 million obs.
I see your point but I think the original paper was forecasting monthly returns instead of daily returns so you would only have 2500*12*5=150K data point. Com.
half for training, you "only" ter.
75K data for a deep NN which might be too small?
I guess your usage of forecasting daily returns versus monthly returns might explain why your test resulted in a negative CAGR while mine is still positive albeit much smaller than in the paper.
I, too, forecast monthly returns but, I do not constrain constructing the features for just 1st day of every month. I construct them for every day. This way I have 2,515*1,203=
3M obs. When computing PnL however, I choose a particular day of the month to invest/close a position.
I acknowledge that this way consecutive days will not have much variation in input features/outcome.
Nonetheless, I'll try training on more isolated dates (one each month) as you suggested.
Desculpe, algo deu errado. Tente novamente ou contate-nos enviando comentários.
Você enviou um ticket de suporte com sucesso.
Nossa equipe de suporte estará em contato em breve.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Комментарии
Отправить комментарий