Aprendizado de máquinas em estratégias de negociação de pares


QuantStart.
O que é a Aprendizagem de Máquinas?
E por que isso é útil para financiamento quantitativo?
O aprendizado de máquina faz uso de algoritmos que aprendem a executar tarefas como a predição ou a classificação sem serem explicitamente programadas para fazê-lo. Essencialmente, os algoritmos aprendem com dados em vez de serem pré-especificados.
Tais algoritmos são incrivelmente diversos e variam a partir de modelos estatísticos mais tradicionais que enfatizam a inferência através de arquiteturas de redes neurais "profundas" altamente complexas que se destacam nas tarefas de predição e classificação.
Ao longo dos últimos dez anos, o aprendizado da máquina tem feito ganhos constantes no setor de finanças quantitativas e despertou o interesse de grandes fundos quantitativos, incluindo Man AHL, DE Shaw, Winton, Citadel e Two Sigma para citar alguns.
Os algoritmos de aprendizagem de máquinas podem ser aplicados de maneiras incrivelmente diversas para financiamento quantitativo. Exemplos particulares incluem:
Previsão de movimentos dos preços dos ativos futuros Previsão de movimentos de liquidez devido ao resgate de capital em grandes fundos Determinação de ativos com preços baixos em nichos de mercado Processamento de linguagem natural do sentimento e previsões do analista de ações Classificação / reconhecimento de imagem para uso em sinais de oferta / demanda de commodities.
Infelizmente, muito do trabalho sobre a aplicação de algoritmos de aprendizagem de máquinas para estratégias de negociação em financiamento quantitativo é proprietário e, portanto, dificil de obter. No entanto, com a prática, pode-se ver como tomar determinados conjuntos de dados e encontrar alfa consistente.
O aprendizado de máquina é uma área ampla e não é um campo que pode ser dominado rapidamente. Os seguintes recursos ensinarão o básico, permitindo que você mergulhe mais profundamente em áreas específicas:
Domínios de Aprendizagem de Máquinas.
Quais são as diferentes áreas de estudo na aprendizagem automática?
As tarefas de aprendizagem de máquinas geralmente são categorizadas em três áreas principais, muitas vezes dependendo do tipo de dados que estão sendo analisados: aprendizado supervisionado, aprendizado sem supervisão e aprendizado de reforço.
Todos os métodos diferem em como o algoritmo de aprendizagem da máquina é "recompensado" por estar correto em suas previsões ou classificações.
Aprendizagem supervisionada - Os algoritmos de aprendizagem supervisionados envolvem dados rotulados. Ou seja, dados que foram rotulados, muitas vezes manualmente, com categorias (como na classificação supervisionada) ou com respostas numéricas (como na regressão supervisionada). Tais algoritmos são treinados sobre os dados e aprendem quais preditores correspondem a quais respostas. Quando aplicados em dados não vistos, eles tentam fazer previsões com base na experiência de treinamento anterior. Um exemplo de financiamento quantitativo seria usando regressão supervisionada para prever o preço das ações de amanhã a partir do valor do mês anterior de dados de preços.
Aprendizagem não supervisionada - Os algoritmos de aprendizagem não supervisionados não utilizam dados rotulados. Em vez disso, eles utilizam a estrutura subjacente dos dados para identificar padrões. O método canônico é clustering não supervisionado, que tenta particionar conjuntos de dados em subclusters que estão associados de alguma forma. Um exemplo de financiamento quantitativo seria agrupar certos ativos em classes que se comportam de forma semelhante para ajustar alocações de portfólio. Leia mais sobre Aprendizagem não supervisionada aqui.
Aprendizagem de reforço - Os algoritmos de aprendizagem de reforço tentam realizar uma tarefa dentro de um determinado ambiente dinâmico, tomando ações dentro do meio ambiente para maximizar um mecanismo de recompensa. Esses algoritmos diferem da aprendizagem supervisionada na medida em que não existe um conjunto direto de pares de dados de entrada / saída. Tais algoritmos tornaram-se famosos recentemente porque foram usados ​​pelo Google DeepMind para ultrapassar o desempenho humano nos jogos Atari e no antigo jogo de Go. Tais algoritmos foram aplicados no financiamento quantitativo para otimizar as carteiras de investimentos.
Algoritmos de Aprendizado de Máquinas.
Quais são os diferentes algoritmos?
Devido à sua natureza interdisciplinar, há um grande número de algoritmos diferentes de aprendizagem de máquinas. A maioria surgiu das comunidades de informática, engenharia e estatística.
A lista de algoritmos de aprendizagem de máquina é quase infinita, pois incluem técnicas de cruzamento e conjuntos de muitos outros algoritmos. No entanto, os algoritmos utilizados com frequência no financiamento quantitativo estão listados abaixo:
Regressão linear - Uma técnica supervisionada elementar de estatística clássica que encontra uma superfície de resposta linear ideal a partir de um conjunto de pares preditores-resposta rotulados. Classificação linear - Essas técnicas supervisionadas classificam os dados em grupos, em vez de prever respostas numéricas. As técnicas comuns incluem Regressão Logística, Análise Discriminante Linear e Classificação Naive Bayes. Métodos baseados em árvores - As árvores de decisão são uma técnica supervisionada que divide o espaço preditor / característica em subconjuntos hipercubicos. Conjuntos de árvores de decisão incluem as florestas aleatórias. Support Vector Machines - SVMs são uma técnica supervisionada que tenta criar um limite de separação linear em espaço de dimensões superiores do que o problema original, a fim de lidar com a separação não linear. Redes Neurais Artificiais / Aprendizagem Profunda - As redes neurais são uma técnica supervisionada que cria hierarquias de "neurônios" de ativação que podem se aproximar de funções não lineares de alta dimensão. As redes "profundas" fazem uso de muitas camadas ocultas de neurônios para formar representações hierárquicas para o desempenho de classificação do estado da arte. Bayesian Networks - Bayesian Networks ou "Bayes Nets" são um modelo de modelo probabilístico que representa relações probabilísticas entre variáveis. Eles são utilizados tanto para aplicações de inferência quanto de aprendizagem. Clustering - Clustering é uma técnica não supervisionada que tenta dividir dados em subconjuntos de acordo com alguns critérios de similaridade. Uma técnica comum é K-Means Clustering. Redução de Dimensionalidade - Os algoritmos de redução de dimensão são técnicas não supervisionadas que tentam transformar o espaço de preditores / fatores em outro conjunto que explica a "variação" nas respostas com menos dimensões. A Análise de Componentes Principais é a técnica canônica aqui.
Determinar a "melhor ferramenta para o trabalho" é um dos aspectos mais complicados do aprendizado de máquina aplicado às finanças quantitativas. Muitos artigos sobre o QuantStart discutem este ponto específico e o guiarão a aplicar a técnica correta quando apropriado.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever na QuantStart List:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso gratuito de 10 partes, com sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.

Forex Mecânico.
Negociação no mercado FX usando estratégias mecânicas de negociação.
Dando um grande passo na aprendizagem de máquinas: resultados históricos rentáveis ​​em vários pares Forex.
No passado, eu consegui usar o aprendizado de máquina para criar sistemas de negociação rentáveis ​​com sucesso, isso inclui minhas implementações da Rede Neural (que gerou as estratégias Sunqu, Tapuy e Paqarin, depois construindo o AsirikuyBrain), bem como minhas tentativas de classificação linear e outras tipos de algoritmos. No entanto, uma das coisas que todos esses desenvolvimentos têm em comum é que eles trocaram dados diários EUR / USD e não conseguiram gerar resultados decentes em outros pares e / ou prazos. Isso significa que, embora eu tenha abordado esse par / timeframe em particular com sucesso (vários desses sistemas foram negociados ao vivo com resultados rentáveis), eu ainda não tinha desenvolvido nada para outros instrumentos. Na publicação de hoje, vou falar sobre um dos meus últimos desenvolvimentos (em grande parte, devido a um membro da Asirikuy que vou mencionar mais adiante), o que me permitiu obter resultados de aprendizado de máquinas rentáveis ​​em outros pares além do EUR /USD. Note-se que todos os resultados dos back-testing mostrados não são compostos (para que possam ser facilmente julgados por linearidade).
O fato de que as técnicas de aprendizado de máquinas parecem ser tão fáceis e # 8221; para desenvolver no EUR / USD diariamente, mas tão difícil de desenvolver em outros pares no mesmo período de tempo sempre me incomodou. Por que o EUR / USD diário é tão especial, que os dados anteriores parecem prever facilmente os resultados futuros da barra diária, enquanto em outros pares isso simplesmente não funciona? A resposta parece ser exatamente o mesmo ponto de vista & # 8212; O que estou tentando prever. Fabio & # 8211; um membro da nossa comunidade & # 8211; apontou para mim que seria interessante tentar classificar se um certo resultado comercial seria bem sucedido, ao invés de tentar classificar simplesmente se o próximo bar seria "otimista ou" # 8221 ;. Prever se uma determinada entrada comercial seria bem sucedida é uma rota interessante, porque você está tentando prever se o seu comércio real dentro de alguns limites de saída alcançará um lucro ou perda, e não se a direccionalidade global for para ou contra você .
Ao implementar a idéia acima em F4, vi que nem todas as previsões de resultados comerciais eram igualmente bem-sucedidas, enquanto a previsão de grandes bordas não funcionou (por exemplo, tentar prever onde um risco de 1: 2 para recompensar o comércio seria bem sucedido ), prever bordas menores funcionou muito melhor. Os diferentes algoritmos também deram resultados marcadamente diferentes, enquanto que os classificadores lineares eram extremamente dependentes dos dados de alimentação (alterados de forma significativa entre os dois conjuntos de dados FX), o Support Vector Machines (SVM) me deu os melhores resultados globais com menor dependência alimentar e lucro melhorado para retirar características. As técnicas de agrupamento de keltner significativas também deram resultados interessantes, embora a rentabilidade tenha sido reduzida em relação ao SVM. Como em todas as minhas implementações de aprendizado de máquina, o treinamento é feito em cada nova barra diária usando as barras X passadas e, portanto, a técnica de aprendizado de máquina reestrutura constantemente durante todo o período de back-testing.
Curiosamente, esta técnica atinge resultados rentáveis ​​(testes de volta de 25 anos) em todas as 4 principais divisas (as mesmas configurações), com resultados particularmente bons no EUR / USD e GBP / USD e resultados pior, mas ainda lucrativos, no USD / CHF e no USD / JPY. A capacidade de prever os resultados parece ser mais perdida no USD / JPY, onde há um período significativamente longo (cerca de 10 anos), onde a estratégia não consegue atingir um nível significativo de sucesso. Gostaria também de salientar que o teste de aprendizagem de máquinas atual usa apenas uma única instância de aprendizado de máquina e eu não tentei aumentar a lucratividade criando comitês ou outros truques # 82221; que podem ajudar a melhorar e suavizar os resultados ao usar técnicas de aprendizado de máquina. Neste caso, tentar diferentes previsões de alcance comercial dentro de um comitê ou mesmo colocar o SVM e as técnicas significativas de Keltner para trabalhar em conjunto podem melhorar significativamente os resultados.
Para mim, o fato de que esta técnica finalmente destruiu a barreira de múltiplos pares e # 8221; tem sido bastante significativo, pois revela algo fundamental sobre o uso da aprendizagem de máquinas que, até agora, parece ter perdido. Isso também reforça o fato de que as seleções de saída são absolutamente críticas ao desenvolver estratégias de aprendizado de máquina, pois tentarem prever as saídas erradas podem facilmente levar a técnicas não lucrativas (como aconteceu comigo ao tentar criar estratégias ML em outros símbolos). Escolher os resultados que são significativos para a negociação, mas ainda previsível com uma boa precisão, leva ao desenvolvimento de estratégias de aprendizado de máquinas mais bem-sucedidas. Neste caso em particular, mudar o foco para uma previsão que teve implicações diretas na lucratividade comercial teve um bom impacto.
Embora os resultados até agora não sejam quantitativamente nada para o partido sobre o # 8221 ;, o fato de que agora existe uma estrada aberta para o desenvolvimento de estratégias rentáveis ​​ML que possam funcionar em toda a linha (não apenas em um par) me dá confiança no fato de estar caminhando pelo caminho correto (graças a Fabio por suas sugestões). Depois de alcançar este marco, meu objetivo agora é polir e estudar essas implementações de aprendizado de máquina para encontrar melhores preditores e melhorar os resultados em pares não EURUSD. Meu objetivo final seria ter uma estratégia de aprendizado de máquina que possa fornecer resultados históricos altamente lineares ( semelhante ao AsirikuyBrain) em pelo menos os 4 maiores (espero que ainda mais pares) para que eu possa ter uma fonte de diversificação que está sendo constantemente adaptada às novas condições de mercado.
Se você gostaria de aprender mais sobre as estratégias de aprendizado da máquina e como você também pode facilmente criar classificadores lineares, as florestas aleatórias, o Keltner significa agrupamento, rede neural e estratégias de SVM em F4В, por favor considere se juntar a Asirikuy, um site cheio de vídeos educacionais, sistemas de negociação , desenvolvimento e uma abordagem sólida, honesta e transparente para negociação automatizada em geral. Espero que tenha gostado deste artigo ! : o)
7 Responses to & # 8220; Dando um grande passo na aprendizagem em máquina: resultados históricos rentáveis ​​em múltiplos pares Forex & # 8221;
& # 8220; O fato de que as técnicas de aprendizado de máquina parecem ser assim: "fácil de desenvolver no EUR / USD diariamente, mas tão difícil de desenvolver em outros pares no mesmo período de tempo sempre me faltou." # 8221;
Você já prestou atenção excepcional a esse par? Se este for o caso, a facilidade é devida a DMB (no sentido geral do termo, isto é, constantemente tentando nas mesmas linhas).
Obrigado por comentar: o) Eu duvido. Se alguma coisa, prestei muito mais atenção ao aprendizado de máquina nos outros pares (particularmente o USDJPY) depois de desenvolver as primeiras técnicas de aprendizado de máquinas que funcionaram no EURUSD, no entanto, eu não consegui obter nada tão lucrativo no USDJPY. Além disso, tentar preditores aleatoriamente escolhidos com vários tipos de algoritmo de aprendizagem de máquina tem muito mais sucesso no EURUSD do que nos outros pares (onde quase nada funciona). No momento, penso que a questão relaciona-se mais com o tipo de produto que está sendo usado, como eu discuti neste artigo. No entanto, definitivamente não é porque prestei mais atenção ao EURUSD na aprendizagem de máquinas (só pode parecer assim porque eu só fui bem sucedido neste par usando ML). Obrigado novamente por escrever,
obrigado pelo reconhecimento. Sigo com interesse os seus desenvolvimentos dentro da comunidade asirikuy.
Como você sabia, eu concebi a idéia em um contexto bastante diferente do que o aprendizado de máquinas, e eu tenho a intenção de explorá-lo de maneiras muito diferentes, mas ter sido um conceito promissor também em sua linha de pesquisa é um sinal encorajador global.
& # 8221; duvido. Se alguma coisa, prestei muito mais atenção à aprendizagem de máquina nos outros pares (particularmente o USDJPY) depois de desenvolver as primeiras técnicas de aprendizado de máquinas que funcionavam no EURUSD, & # 8221;
hmm & # 8230; Você diz "# 8220; depois do & # 8230; EURUSD & # 8221 ;. Talvez se você começasse com o USDJPY primeiro, isso seria mais fácil. você considerou a possibilidade de suas técnicas de mineração de dados se adequarem melhor ao EURUSD e você os desenvolveu com esse par em mente?
Estou ficando intrigado com algumas das suas declarações de tempos em tempos e agora veio este sobre sistemas que são difíceis de desenvolver em outros pares. Por exemplo, meus melhores sistemas estão em USDCHF e USDJPY. Nunca prestei demasiada atenção ao EURUSD.
Posso pedir-lhe que esclareça um pouco sobre o & # 8220; Prever se uma certa entrada de comércio seria bem sucedida? # 8221 ;. Você faz algo como as seguintes etapas?
& # 8211; Todos os dias, você coleciona as barras X passadas e as usa como preditores.
& # 8211; Para N estratégias de saída você treina SVM com base nos últimos períodos de T.
& # 8211; se o dia atual tiver uma probabilidade de comércio bem sucedido maior do que P, você depende de uma determinada estratégia de saída.
& # 8211; se mais de uma negociação de sucesso de alta probabilidade for encontrada, escolha uma com maior probabilidade.
É assim? Você intervém nos negócios abertos em caso de contradição de resultados comerciais ou deixa-os sair com base no plano inicial?
Obrigado por escrever: o) Prefiro manter uma explicação detalhada sobre esta técnica de aprendizagem de máquinas dentro de Asirikuy. Se você for um membro, fique à vontade para pedir no fórum lá. Obrigado novamente por escrever,
[& # 8230;] quadros (abaixo do diário). Embora tenha feito alguns progressos relacionados aos sistemas de multi-moeda (veja esta publicação), a criação de sistemas de quadros de tempo mais baixos sempre foi difícil, devido tanto ao [& # 8230;] adicionado

Aprendizado de máquinas em estratégias de negociação de pares
Um tipo de algo popular e bem sucedido que eu vejo no Quantopian é Pairs Trading. Embora essa categoria de estratégias possa exibir características de desempenho atrativas, muitas vezes vejo algoritmos de comunidade que possuem um conjunto muito pequeno de pares elegíveis. Como em qualquer estratégia quantitativa, a amplitude das apostas é proporcional aos retornos de qualidade. Como tal, como criador de uma estratégia de negociação de pares, você sempre prefere mais pares (válidos) em vez de menos. O caderno abaixo mostra um exemplo concreto de usar técnicas de aprendizado de máquina, prontamente disponíveis em scikit-learn, para encontrar pares. A presunção aqui é que esses pares têm uma alta probabilidade de continuar exibindo um comportamento de reversão médio fora de amostra - um objetivo que podemos validar no devido tempo.
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.
Jonathan. Muito obrigado por isso. Este é um caderno muito legal para ilustrar o uso do ML para auxiliar na análise e descoberta de relacionamento. Chega de aplicação direta de ML a dados de mercado (OHLCV). Obrigado por avançar a fronteira. Novamente.
HI Jonathan, esta é uma pesquisa extremamente boa e definitivamente vou passar por cada passo e fazer minha própria análise detalhada.
Eu tenho algumas perguntas tangenciais com a implementação de uma estratégia de negociação de pares ou uma variante dela em um portfólio longo e curto com a finalidade de escrever um algoritmo que possa atender aos requisitos para uma alocação.
a) O alfa da estratégia é originário do conjunto de dados (financial_health_grade). Pareceu-me que a suposição de que os estoques da mesma base financeira se comporta de forma semelhante é feita no início do processo. Mas o agrupamento parece estar usando o preço da equidade para chegar a clusters. O alfa será considerado parte do conjunto de dados ou o algoritmo de agrupamento. Eu estou fazendo essa pergunta porque houve um empurrão recentemente para encontrar alfa nos conjuntos de dados que a Quantopian fornece e não tem certeza se uma lógica econômica pode ser feita que o alfa foi derivado do financial_health_grade diretamente.
b) Também tenho uma questão geral com negociação de pares como estratégia para alocação de fundos Q. O intercâmbio de pares se encaixa nos requisitos dos critérios de alocação de fundos da Q, onde precisamos controlar o risco de beta, risco do setor e concentração de posição para estar dentro de certos limites que é conseguido normalmente através de order_optimal_portfolio e cvxopt subjacente. Se sabemos quais pares vamos negociar, nem sempre será possível encaixar bem com o algoritmo subjacente em ordem_optimal_portfolio para seleção de ações com exposições de risco controladas.
Independentemente das minhas perguntas de alocação Q, definitivamente parece uma área muito interessante para explorar ainda mais.
Obrigado por compartilhar este trabalho. Um dos meus objetivos com a quespian é aprender algumas técnicas de ML; Eu me beneficiarei de examinar seu caderno em detalhes.
Alguns comentários iniciais:
Você faz o agrupamento, seguido da análise dos pares. Mas, como isso se compara com encontrar pares, escolhendo aleatoriamente pares de todo o universo e testando-os? Em outras palavras, se eu estiver disposto a aguardar N minutos / horas / dias para encontrar M pares, quanto benefício o agrupamento fornece sobre uma técnica de força bruta? E eu esperaria que a habilidade comercial fosse melhor para pares da técnica de agrupamento, sobre a força bruta?
Posso abordar alguns destes pontos.
Basta olhar através de todos os pares produzirá uma enorme quantidade de comparações múltiplas, tendências de polarização / palestras / p-hacking-and-multiple-comparisons-bias, o que tornaria os resultados não úteis. A vantagem de uma técnica de agrupamento é que você faz uma primeira passagem que pode sugerir cestas relacionadas, efetivamente fazendo redução de dimensionalidade em recursos. Dentro deste novo conjunto menor você pode escolher candidatos prováveis ​​e fazer testes fora da amostra.
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.
Anthony, para o seu ponto de vista, acho que há muitas aplicações de ML que podem ser valiosas para um processo de investimento além de tentar ajustar e prever preços / retornos diretamente. isso é apenas um exemplo. A combinação de sinal, conforme descrito nesta série popular, é outra ótima aplicação.
a) O alfa da estratégia é originário do conjunto de dados (financial_health_grade). Pareceu-me que a suposição de que os estoques da mesma base financeira se comporta de forma semelhante é feita no início do processo. Mas o agrupamento parece estar usando o preço da equidade para chegar a clusters. O alfa será considerado parte do conjunto de dados ou o algoritmo de agrupamento. Eu estou fazendo essa pergunta porque houve um impulso recentemente para encontrar alfa nos conjuntos de dados que a Quantopian fornece e não tenho certeza se um racionalismo econômico pode ser feito que o alfa foi derivado do financial_health_grade diretamente,
Minha análise não pretende dizer nada sobre qualquer alfa incorporado no financial_health_grade. Lá muito bem pode haver algum alfa lá, mas essa análise não exige isso. Eu simplesmente estou dizendo que os estoques com notas de saúde similares deveriam ter reações econômicas semelhantes e comportamento de preço das ações. Uso os preços das ações, traduzido para retornos e depois reduzido para 50 carregamentos de PCA, para fazer o agrupamento junto com market cap e financial_health_grade. A matriz de características para o agrupamento tem 52 colunas: 50 são as cargas de PCA, uma é a financeira_health_grade, e uma é boné de mercado. Uma análise completamente separada poderia ser feita (via alphalens) para ver se o financial_health_grade é de fato um fator alfa, mas, novamente, esse não está relacionado com a minha postagem.
b) Também tenho uma questão geral com negociação de pares como estratégia para alocação de fundos Q. O intercâmbio de pares se encaixa nos requisitos dos critérios de alocação de fundos da Q, onde precisamos controlar o risco de beta, risco do setor e concentração de posição para estar dentro de certos limites que é conseguido normalmente através de order_optimal_portfolio e cvxopt subjacente. Se sabemos quais pares vamos negociar, nem sempre será possível encaixar bem com o algoritmo subjacente em ordem_optimal_portfolio para seleção de ações com exposições de risco controladas.
Sim! Um par de pares é muito adequado a uma alocação de fundos Q. Uma característica dos pares algos que é muito agradável é que os lados longo e curto são naturalmente equilibrados com ativos auto-similares. Assim, um livro de pares, muitas vezes sem qualquer massagem adicional, é naturalmente beta e setor neutro. O desafio com pares de algos é muitas vezes chegar a pares válidos suficientes e, consequentemente, alcançar um uso de capital consistente. Há um exemplo de exemplo aqui que usa order_optimal_portfolio dentro de um algoritmo de pares.
Eu concordo com a resposta de Delaney. Quanto ao teste de Johansen, notei esta publicação solitária que aponta para uma implementação do Python que você pode copiar / colar. Não tentei.
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.
Jonathan, obrigado por explicar detalhadamente e fornecendo sugestões úteis, incluindo as alterações na ordem_ptimal_portfolio que são necessárias para acompanhar a estratégia de negociação de Paris. Vejo agora como a estratégia de negociação de pares pode reduzir as exposições ao risco e por que não precisamos pedir_ptimal_portfolio para fazer isso para nós nesta estratégia.
Eu tinha ficado longe do que pareceria ser pura estratégia baseada em preços antes porque eu tinha desenvolvido alguns equívocos que significam algoritmos de tipo de reversão, que não estão sendo favorecidos na alocação Q após a leitura de posts do fórum, obrigado por esclarecer a situação.
Este é um tópico muito interessante para explorar e eu definitivamente passaria algum tempo nesta área em breve expandindo seu excelente trabalho de pesquisa.
Eu não consigo a decomposição PCA que você usa:
pcaponents_.T como os novos dados.
Eu teria feito:
res [& # 39; Market Cap & # 39;] [returns. columns].values ​​[:, np. newaxis],
res [& # 39; Financial Health & # 39;] [returns. columns].values ​​[:, np. newaxis])
Essencialmente, você tem 504 amostras de dados com alguns 1400 recursos que você deseja reduzir para 50. ou seja, 504 amostras de 50 recursos. O fit_transform encontra os novos eixos e transforma os dados. Você apenas usa os eixos.
Quanto ao viés de comparações múltiplas, ainda não tenho uma sensação intuitiva para isso. Digamos que eu tenho uma caixa de 1000 palitos e quero encontrar pares que tenham quase o mesmo peso e comprimento, dentro das tolerâncias especificadas. Eu tenho uma balança e um microscópio de medição. Arraso as mangas e começo a fazer comparações aleatórias em pares. Após 1000 * 999/2 = 499.500 comparações, eu tenho feito, e tenho uma lista de pares de palitos de dente (eu esqueci de mencionar, antes da minha avaliação, eu tinha cada palito de dente gravado a laser com um número de série). Então, onde é que o viés entra?
Eu acho que a idéia aqui é que, se eu tiver alguma informação adicional sobre os palitos de dentes, além do peso e do comprimento, então talvez eu possa usá-lo para melhorar minha avaliação. Por exemplo, se os palitos de dente estiverem coloridos (para os feriados), vermelho e verde, então eu posso fazer a hipótese de que os palitos de dente vermelhos foram feitos em uma fábrica de palitos vermelhos e os verdes em fábrica separada. Nesse caso, o agrupamento por cor pode ajudar a melhorar minha avaliação e reduzir o número de pares falsos. Mas então, se os palitos de dentes estiverem todos feitos na mesma fábrica, e o processo de coloração não afetará o peso e / ou o comprimento de forma diferente por cor, então eu poderia reivindicar que eu descobri uma técnica melhorada para o emparelhamento de palito de dentes, mas não fez nada substantivo.
Para a análise de Jonathan, eu penso que a hipótese é algo como "Toda essa análise extravagante funciona e reduz o número de pares cointegrados espúrios, em uma abordagem de força bruta". Então, parece que um realmente precisaria fazer a análise da força bruta, e então descobrir como compará-la à técnica proposta, para determinar se ela é benéfica. Pode ser a "bomba" Mas para mim, a vantagem não é clara (além de talvez reduzir o problema até ser mais computacionalmente atraente com os recursos disponíveis).
Um par de pares é muito adequado a uma alocação de fundos Q.
Intuitivamente, como outras técnicas de quantos conhecidos usando dados prontamente disponíveis (por exemplo, reversão de preço), eu acho que haveria colhidas muito finas lá fora. Minha suposição é que, há décadas, os hedge funds tiveram grande honkin & # 39; Os computadores se agacham com o problema, espremendo o alfa dos pares de negociação. Eu não tenho nenhuma experiência na indústria, mas não parece que a atapia teria alguma vantagem nessa área. Dito isto, talvez como um fator alfa incremental no esquema múltiplo multi-fator descrito na publicação do blog de Jonathan, pode-se enxergá-lo na mistura, apenas para o Yucks. Seria possível formular a comercialização de pares como um fator alfa do pipeline geral?
Como um comentário geral, eu concordo que a mensagem sobre o que é mais provável obter uma alocação é confusa. Por um lado, temos a diretiva para usar & quot; conjuntos de dados alternativos & quot; e, por outro lado, a orientação de que a negociação de pares, potencialmente apenas usando os fundamentos da empresa e os dados de preço e volume, seria atraente. E também a orientação de que os algos multifatoriais são desejáveis ​​(mas talvez apenas se todos os fatores se basearem em conjuntos de dados alternativos?). Pessoalmente, não quero passar nos próximos 6 meses desenvolvendo um algoritmo de troca de pares (ou fator alfa, se isso for viável), e depois outro papel de 6 meses negociando, apenas para ouvir que minhas chances de obter uma alocação são escassos devido à intenção estratégica que não corresponde aos requisitos (esta é a mensagem que eu pensava sobre estratégias de reversão de preços e, possivelmente, mesmo fatores de alfa de reversão de preço médio. Eu não tenho certeza). Em certo sentido, uma vantagem que a Quantopian tem sobre os hedge funds tradicionais é que eles poderiam ignorar completamente a intenção estratégica e basta basear suas avaliações e alocações na performance do black-box. Isso eliminaria o risco de mentalidade de rebanho ou preconceitos pessoais por parte da equipe do fundo. Apenas vá com os dados.
O caderno é ótimo. Eu acho que todo mundo entende que o exemplo de amostra aqui (leitura 24) referenciado de passagem foi apenas fornecido como um ponto de partida para negociação de pares naquela época, eu apenas o temperarei um pouco, não para dissimular demais, mas desde que eu olhei, então, para aqueles que podem viajar por esse caminho, algumas coisas para saber. Se a clonagem for feita, a data final é automaticamente ajustada para a frente para hoje e, portanto, não é surpresa que, uma vez que se originou há algum tempo, 3 de suas 4 ações foram descartadas, então esses comentários só se aplicam até o final de 2015 antes os delists (antes do primeiro em fevereiro de 2016). Ele atingiu uma alavanca de 1,36 em um ponto e, como sempre, é algo para nós manter um olho. Seu FixedSlippage não resulta em preenchimentos parciais que podem ser úteis para testar às vezes, a partir de Ajuda: o uso ingênuo de modelos de deslizamento fixos levará a preenchimentos irrealistas, particularmente com grandes pedidos e / ou títulos ilíquidos. Usando o mesmo FixedSlippage, os retornos são quase idênticos em 1M vs 10M, embora o uso do capital se torne apenas 9%. Assim, a linha de deslizamento pode ser comentada para o deslizamento padrão e, em seguida, em 1M, há uma média de [número inteiro editado posteriormente, porque pode ter havido um erro na contagem neste momento] minutos de preenchimentos parciais por estoque e o efeito tira retornos de +29 a -16 e reduz a alavanca máxima para .52. Ambos os pares ABGB e FSLR tiveram perdas. Não é um grande problema, já que é apenas um ponto de partida para construir, também são os outros pares de negociação (mais básico, palestra 23) nas séries de palestra que vale a pena conhecer.
Essencialmente, você tem 504 amostras de dados com alguns 1400 recursos que você deseja reduzir para 50. ou seja, 504 amostras de 50 recursos. O fit_transform encontra os novos eixos e transforma os dados. Você apenas usa os eixos.
É intencional que eu não faça a transformação dos dados. A interpretação financeira é que o pcaponents_.T é por betas por estoque para fatores estatísticos ocultos. Quando você passa com fit_transform (.), Você obtém a série temporal de cada fator escondido. Eu não quero aqueles. Eu simplesmente quero me agrupar nas betas.
Grant, Olive Coyote,
Eu não concordo que este trabalho é para o único benefício do tempo de computação. A diferença fundamental entre encontrar pares e sua analogia de palito de dentes é que o resultado de sua pesquisa de palitos será a verdade no solo, mas isso não é assim no trabalho estatístico. O palito de dentes mais curto de hoje não deixa de ser o palito mais curto do amanhã. Uma pesquisa de pares de força bruta certamente apresentará muitos resultados espúrios. Para proteger contra a mineração de dados, você deve condicionar a sua pesquisa.
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.
Eu postei este exemplo, o que pode ser de interesse.
Esse exemplo é baseado em um exemplo no scikit-learn docs aqui. Se você pensa sobre este trabalho como um processo de três passos: 1) definir recursos, 2) cluster, 3) visualizar, eu escolhi 1) PCA + financial_health_grade + market cap, 2) DBSCAN, 3) T-SNE; o exemplo citado escolheu 1) covariância. GraphLassoCV sobre mudanças de preços intradiárias, 2) Propagação de afinidade e 3) Incorporação linear linear.
Eu havia reproduzido isso em Quantopian Research há algum tempo. Nós não expormos algumas das classes e métodos sofisticados de matplotlib que ele usa, então meu código de visualização real é um pouco diferente.
É divertido ver quantas maneiras diferentes se podem agrupar ações.
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.
Thanks for the additional example.
For the toothpicks, there is a measurement error of the weight and length, so just picking at random will result in some pairings that aren't correct. But if clustering by color results in more uniformity in each cluster, then it should help. For example, if the differences were slight and were not well-resolved by the measurements, then the color factor could provide a boost. At least that's my intuition, but I need to sleep on it, and read a bit more about multiple comparisons bias (if that is actually what is at play here).
I'm not saying that the clustering, etc. doesn't help for stocks, but just that if you don't actually compare it to brute force, then there is no way to tell. So if you are trying to show the benefit over brute force, you'll need to do a bit more work.
After reading this notebook, I needed only one experiment to ascertain if there was something in this clustering of correlated stocks. Since the notebook is looking at one stock universe from its leet (1337) point of view, I opted to simply change its random seed, without changing anything else. This way, all that is changed is this peeping hole into the past.
Here are the outcome of the 4 tests:
The clustering which should have been only slightly differentiable, is all over the place. The point being that out of the gazillion possibilities, gazillions were possible. And, therefore, whatever trading strategy that might be constructed from any of those perceptions might not carry that well going forward.
My way of saying: I do not see anything there. Or, am I missing on something.
T-SNE is a visualization step; it does not affect the formation of the clusters. T-SNE is meant to visually validate that the clusters are distinct. To me, your experiment validates the soundness of these clusters, not the other way around. With the various random state parameters you chose, in all cases, the clusters remain intact and clearly separable in space. The individual cluster shapes are in many cases even the same (just rotated in space). The location of the clusters in the plane is not important. The random state parameter serves to simply inform the artistic rendering of the plot.
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.
I think you bring up a great example of one of the fundamental differences between systems studied in engineering and systems studied in finance. Generally in engineering the past is representative of the future. A toothpick's weight will not change over time (by much at least), and other properties are also the same over time. We refer to this more generally as stationarity. In engineering systems studied are similar, laws of physics hold over time. A bridge built one way that stands up now will likely stand up tomorrow. The opposite is true in finance and many other more volatile and less stationary systems.
The implicit assumption in many engineering approaches is that the past implies the future. In finance that assumption is not a given and must in itself be checked.
Consider if the weights of the toothpicks were changing over time and drawn from some unknown stochastic process. This is effectively the case here. When non-stationarity exists, you cannot just assume past implies future. You need to understand more of the system and effectively model what is going on. At the end of the day you do want to produce stationarity in your residuals (model error), as this means you have explained any non-stationarity in the system. If you just searched through your data from yesterday's toothpicks, there may be no relationship to tomorrows toothpicks.
What the clustering is doing is searching for toothpicks that have properties which we believe are more likely to make them similar, effectively the driving factors of the relationship. As far as multiple comparisons, I recommend you actually go through the lecture and get your hands dirty. There are real experiments in there that you can muck with and see for yourself if you don't believe me.
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.
I know about stationarity. In manufacturing, it is a key concept in statistical process control (e. g. see the Shewhart control chart described on the nice NIST site). In trading, Bollinger bands are basically control charts with a bet on stationarity.
As far as I can tell, the multiple comparisons problem has nothing to do with stationarity. It is a general pitfall associated with making repeated statistical tests and finding an increasing number of false positives with the number of tests. In the case of toothpick weight, suppose my question is "Do I have a bunch of toothpicks in excess of 101 g?" and in my box of 1000 toothpicks, there are none above 100 g (but a lot right at 100 g). If I use a cheapo "noisy" weight scale, the probability of answering incorrectly goes up, with the number of toothpicks I measure (asymptotically approaching an answer of "yes" when the correct answer is "no"). The solution to the problem is to get a better weight scale. In the case of stock pairs, if the question is "Do I have a bunch of stock pairs that I can trade profitably?" and I search brute force with a marginal technique, then I'll answer "yes" (and lose money) when the correct answer is "no" (and not lose money). The brute force approach for finding stock pairs would work if one had a better test.
The issue I see here is that the analysis needs to test for both cointegration and its stationarity. The latter is what really matters for trading, so to show that clustering is an improvement over brute-force pair selection, one would need to look at the persistence of the conintegration of each pair versus time. If I'm thinking about this correctly, one really needs to find techniques that spit out pairs with persistent cointegration. Presumably clustering helps, but it is still an open question.
One suggestion is to consider if using minutely data would help. In science/engineering, one common technique to improve the signal to noise ratio (SNR) is to increase the sampling rate, smooth, and then down-sample (for data storage, computations, etc). For example, rather than using daily closing prices, estimate the daily VWAP from the minute bars, and use it instead (unless there is something special about the last trade price of the day). The "error bars" will be much smaller.
Also, analyses can take into account the error bars. For example, for x-y data that have unequal error bars, one can do a straight-line fit, applying less weight to points with larger error bars. Is there a way to account for error bars when searching for pairs?
Jonathan, even if I can see the artistry of the cluster separation, it does not mean I can extract worthwhile profits when they move from quadrant to quadrant shifting their center of mass, their axis, and size. It is like hitting a moving target that can change shape and direction from second to second, almost like shooting in the dark. An illusion: oops, it was there, and now it's not. Where did it go? Oops, it moved again.
To me, you are more providing a do not do this in your trading strategy since overall profit might be more than illusive. For instance, what kind of pair trading strategy could even extract a reasonable profit from cluster 4? I do not see how anyone could ever extract more than 1% over those 2 years, no matter the nature of his/her pair trading strategy.
There might be something to do playing cluster against cluster, but they too are moving all over the place. They positively correlate one second, and the reverse the next. The image I get from peeping at that past data is more than just a blur.
All I see from cluster 4 is this: take anyone of those 3 stocks, they were about equivalent in the past. If someone forced the inclusion of one of those 3 stocks in another kind of simulation, they might not see much of a difference whichever stock was used.
Has anyone on Quantopian posted a cloneable pair trading strategy using these clustering methods? Let me see how productive they would have been or could be?
You said something which is exactly right "one would need to look at the persistence of the conintegration of each pair versus time. If I'm thinking about this correctly, one really needs to find techniques that spit out pairs with persistent cointegration." That's the core of this, we're looking for cointegration that persists.
The noisy scale analogy works as well, just keep in mind that it can not only incorrectly categorize 99g picks as 101g, but it could also categorize 102g as 97g. Getting a more accurate scale/test is absolutely the solution. That is the subject of a lot of research in statistics, and generally the only real way is to increase sample size and check underlying assumptions. Otherwise I think you're on the right track here. The other thing about clustering is just that we're hoping it will increase your likelihood of finding pairs. If you brute forced it you might end up with way too many pair candidates to wade through. There are many ways to find pairs, this is just one potential technique to be investigated.
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.
I'm trying to picture what this whole thing might look like, using the Q research platform, to sort out if it at all makes sense to then pursue an algo. It seems like we need some sort of rolling analysis, going back as far as we can (e. g. 2002). I guess every day, one would find a new set of clusters, and then find the pairs in those clusters? And then find pairs that persist long enough to make money on them? And then sort out a model that would reliably identify pairs that will persist long enough to make money on them (since on any given day, we'd want to know how to do a drop/add of our universe of pairs of stocks)?
I'm also wondering how to deal with the fact that we don't really have discrete pairs, but baskets of stocks (since some stocks form pairs with more than a single other stock)?
And I guess we'd want to have the pairs trading strategy as an alpha factor in a multi-factor algo, not as a single-factor algo, right?
The whole thing feels kinda gnarly at this point. whew! Or am I making it harder than it needs to be?
What's the game plan on your end? Are you going to work this through to the end, as a public domain effort? Or are you looking for the crowd to carry it through?
Using the white/grey/black edge lingo of the book "Black Edge," pairs trading of this sort would be firmly in the white edge category. The information is readily accessible (although not necessarily free) and the analysis tools (both software and hardware) are commercial off-the-shelf (again, not necessarily free, but we aren't talking about nation-state class supercomputers coded by a team of wizards here). For a universe of stocks comparable to the Q1500US, it would be interesting to see what kind of "alpha decay" pairs trading has undergone since, say, 1990 (or even back to 2002, using the Q data). If the trend is asymptotically approaching zero alpha, then it might be wise to move on to something else.
Another angle is that although reportedly the hedge fund world is highly secretive, I suspect not so much. I gather that Quantopian is now pretty well plugged into the hedge fund scene. What's the word on the street regarding the potential viability of equity pairs trading, using Quantopian in its present form? I don't work in the field, and so I have no idea if this is more of an illustration, a pure academic exercise, or a short-putt to a Q fund allocation (I sorta doubt the latter, since if it were, then it wouldn't be put in the public domain). I have no idea if this is akin to "Hey, check this out: we have a new-fangled contraption called the automobile powered by an internal combustion engine. Just pour in some gasoline and away she goes!" More background and justification would be helpful. I'm happy to donate some time to Quantopian, but it is a lot more fun if, intuitively, I have a sense that I'm vectored in the right direction.
On a separate note, I'd be careful not to dismiss the brute force approach out of hand due to the computational effort. For the Q1500US, there are 1,124,250 pairs to analyze. On the surface, it doesn't sound so bad, since the computation can be parallelized to generate the base list of pairs versus time. There are about 2x10^6 pixels in a 1080p HDTV, so it is like one HDTV frame per trading day--back-of-the-envelope, data storage and transmission should be no problemo. o que estou perdendo? I guess where I'm heading is that Q could put out a database of all the pairs, back to 2002, and then users could try to understand how to filter out the spurious pairs (the implication of Jonathan's post is that they aren't all spurious; it is just a matter of developing a model to find the trade-able pairs point-in-time).
Here's a potentially relevant paper:
In general you need a hypothesis to start off with, as to why two time-series would affect one another, otherwise you select pairs which have no relationship at all ( Delaney's link to lecture 16 is effective ).
For example, if I give you the following data for a time-series.
. how confident are you that the trend will repeat?
(The above is a real time-series and has a real answer.)
Well, my hypothesis could be that the Q1500US has no spurious pairs; any pair found by brute force will be profitable. Personally, I don't know if the hypothesis is true or false (but it should be easy to show; perhaps Delaney shows this in his notebook, if I can wade through all of the Python and stats). My point is that one way to go at the problem is to pre-compute all of the pairs, and then try to sort out a means to filter out the spurious ones. In some sense, that's what Jonathan is doing. Any pairs not within clusters would be filtered out. There is a multitude of filters that could be applied, so having the entire universe of point-in-time candidate pairs to filter on could be useful (it would seem to be a nice fit for Pipeline). Then testing simple hypotheses would be easy (e. g. "Filtering out all pairs with tickers not starting with the same letter of the alphabet will result in a profitable portfolio of remaining pairs").
Regarding the time series you shared, I'll bet $5 US it will repeat. How long do I have to wait for the answer?
"Horses are highly social herd animals that prefer to live in a group. There also is a linear dominance hierarchy in any herd. They will establish a "pecking order" for the purpose of determining which herd member directs the behavior of others, eats and drinks first, and so on."
So before knowing any more, you were willing to bet $5.
In fact the time-series is the monthly average temperature recorded in London in degrees C, starting from December 2012.
With that new knowledge, how much would you bet now? A lot more I would assume. Of course this scenario is academic but the point remains: we want a structural reason for a pattern to continue because, without it, you can invest very little.
A fun example would be to take a year of temperatures following that period and do some stats. What if I gave you a p-value of 0.06 that the following year's data came from the same population? Would you assume the pattern had ended?
Taking only the pairs which satisfy the statistical mumbo jumbo (from your total 1,124,250 pairs) will definitely contain spurious results. Your argument is then to filter them down more.
. one option is to take each pair and decide whether there is any reason why two entities should be so related. That would take a while.
. another option is to wait 2 years, and use the out-of-sample data to "filter your filter". Some of those which had real relationships will be filtered out (false negatives) and some of those with no relationship will continue (false positives). That's the same problem you had before.
Grant, I agree with your point of view. Let me clarify mine.
Let's take 1,000 Q members running Jonathan's notebook. They all, only replace the leet with none (no random seed), or each take a different seed. This would make the pinhole from which they will look at this Q1500US ball of variance unique. The outcome would be related to the very microsecond they launch the pairing clustering. What would be the answer?
Everyone of them would get a different pairing chart. They might get some look alike clusters, which is cute, but these clusters would appear in different quadrants, having positive and negative inter-correlations, spread more or less around their erratic center of mass.
Technically, you would have 1,000 charts like the ones I've posted. Some in the group, if they apply some pair trading strategy to their found clusters, might win something, not much, but still win. However, we would have no way of saying: members 13, 37, and 42 will be the best, or even worse, that they will win at all.
And if those 1,000 members did the test again, they each would get a different answer. What would their trading strategies do with that? Designing a trading strategy using clustered pairing that could be profitable would be a daunting task. However, for anyone succeeding over some 100 simulations, meaning profiting, might have a robust system even if profits are low.
The tool, nonetheless, might be useful in detecting price movement similarities. A way of finding substitute replacement candidates for your portfolio, if you ever needed some. But then again, why select another poorly behaving stock to replace the one you had if you could go right out and simple select a better one with maybe no relation to the one you had or its cluster?
The cluster pairing might have its use for someone wishing stable returns, even if below market averages. I think I will be looking for greener pastures.
I found Jonathan's notebook very interesting.
Another random thought is that one could do the fancy ML either as Jonathan has shown and then find the pairs or first trim down the Q1500US to contain only stocks that belong to at least one pair (or only one pair?), and then run the ML, and pair identification, per Jonathan's recipe.
It seems like this would give the ML a better shot since irrelevant stocks would not be adding noise/confusion.
First, Jonathan, thanks for the instructive notebook. I appreciate the effort and know that ita always takes a few long days to complete something like what you did!
Second, I've been trying to learn&apply some stat arb, that uses pairs or copula trading, and came upon this interesting final report from a recent class project. Any comments about how one would apply the clustering used in this post, using ideas in the linked-to paper below would be appreciated.
Third, there were some Q forum posts relating to cointegration and pairs trading, both notebook and algo, in the past that would seem useful to create an algo. I'm looking at them for ideas on how to get pairs that are in a productive mean-reversion state. Any help here appreciated!
Personally, I have been having trouble with time-outs wrt the limits Q sets on when trying to compute factors based on the above concepts.
I end up having to put timers all over the place and adjust the problem size parameters based on how much time is allotted for that run.
Great post Jonathan. How did you come up with the number of 1.9 in DBSCAN(eps=1.9, min_samples=3) . Eps is an important parameter in DBSCAN and can influence number of pairs. Was it a random guess ? I see it creates maximum number of pairs at 1.9.
I have modified Jonathan's notebook to use monthly returns of stocks as clustering features instead of a PCA decomposition of the daily returns. My assumption is that co-integrated stocks move in similar fashion over longer periods of time. So instead of reducing 504 day returns to 50 components, I directly use 24 months of returns as features. The results seem correct to me.
It's a big stretch, in my opinion, to say that this (large) number of principal components has any underlying economic meaning. Maybe the first 3 can proxy for latent factors -- the yield curve can be decomposed into parallel shifts, tilts, and twists, using PCA, for example -- but 50?
This still feels like a data mining exercise, with the main benefit being computational efficiency.
I made an affirmative choice to use 50 factors. Commercial risk models for the US equity market typically have between 20 and 75 factors. For example, the Barra US Total Market Model has 75 factors (all with direct economic meaning); the Northfield US Short Term Equity Risk Model has 20 factors (purely statistical). The US treasury yield curve or major swap curves can be well explained by a very small number of factors, but the equity market is much more complex.
. even if I can see the artistry of the cluster separation, it does not mean I can extract worthwhile profits when they move from quadrant to quadrant.
. replace the leet with none (no random seed), or each take a different seed. This would make the pinhole from which they will look at this Q1500US ball of variance unique. The outcome would be related to the very microsecond they launch the pairing clustering.
The clusters are deterministic and do not move. They are chosen by the DBSCAN algorithm which is deterministic. You are conflating the clustering with the visualization.
How did you come up with the number of 1.9 in DBSCAN(eps=1.9, min_samples=3) .
I chose DBSCAN because, unlike KMeans, Agglomerative Clustering, etc., you do not need to specify the number of clusters and not all samples get clustered. The latter feature is attractive to me because it makes sense to me that not every stock will be so closely related to at least one other stock that a viable pair relationship would sustain. It is likely that most stocks are "noise" with respect to this analysis and DBSCAN handles that well. I chose 3 as the min_samples parameter because I wanted to be able to find small clusters. In this application, it seems reasonable to me that tightly related stocks would exist in small clusters. Per the docs, "Epsilon is a distance value, so you can survey the distribution of distances in your dataset to attempt to get an idea of where it should lie." That's essentially what I did -- I did not tune the parameter programmatically; rather I chose a few values and settled on this one once I found a setting that produced a handful of tight clusters. The result might be improved with a different approach. I was careful though not to spend a lot of time on tuning this parameter.
On a separate note, I'd be careful not to dismiss the brute force approach out of hand due to the computational effort.
This example workflow is not meant to reduce the computational effort; rather it is meant to mitigate data mining and spurious results.
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.
There's a lot for my little pea brain to take in here, but there appears to be a straightforward recipe for avoiding this multiple comparisons pitfall, call the Bonferroni correction. You are using a fixed p-value:
Unless there is a reason to think that the clustering has completely eliminated the multiple comparisons bias, shouldn't the p-value be divided by the number of candidate pairs within each cluster?
Trying the Bonferroni correction should be a minor tweak to your code:
What needs to change?
As is stated here, "The correction comes at the cost of increasing the probability of producing false negatives, i. e., reducing statistical power." Elsewhere, I've read that for a large number of comparisons (e. g. brute-force pairs search), the p-value ends up so small that the correction tends to reduce the statistical power to zero. But here we have a more modest number of pairs, and your hypothesis is that some of them should be the real deal, so maybe the Bonferroni correction would be appropriate (perhaps multiplying the resulting p-value by a hyperparameter scale value, if too few pairs result). Generally, I'd think that if the clusters are of unequal size, then you shouldn't be using the same p-value for each (since the risk of multiple comparison bias goes up with cluster size).
it is meant to mitigate data mining and spurious results.
If that is the premise, then you'll need to compare the brute-force method to this one. If both methods yield zilch in terms of profitability (or if the new method provides negligible benefit), then no progress has been made. Since you have data going back to 2002, you can make the comparison without waiting for out-of-sample data to roll in (if you are careful in your methodology). My basic point is that if you are wanting to show that the proposed method is better, you have to say better than what, and quantify the improvement.
Bonferroni is a great way to correct your p-values when running a smaller number of tests. It tends to be over-conservative when running many tests and can quickly reduce a process to one that is way too under-sensitive and never triggers.
If you were to run it on 1M pairs you'd be dividing the p-values by 1M, which would result in an incredibly low chance a good pair ever made it through. This is the fundamental problem with multiple comparisons. Generally it's best to intelligently reduce the number of tests that are being done.
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.
Generally it's best to intelligently reduce the number of tests that are being done.
ESTÁ BEM. Parece bom. But if the number of tests is more than one, then a correction for multiple comparisons would need to be applied, right?. So, I'm wondering if the p = 0.05 used above is too high?
Here's my attempt to apply the Bonferroni correction to Jonathan's notebook, accounting for the within-cluster multiple comparisons bias, at a significance of p = 0.05. Did I apply it correctly?
The result, as one might expect, is that we end up with fewer pairs--only two! And interestingly, there are 4 unique tickers. All 4 are in the energy business, so I guess at some level, it makes sense. Is there something unique about the energy business that would tend to result in statistically significant pairs (over other businesses)?
We have to distinguish between exploratory analysis and definitive testing. The analysis above is exploratory and intended to suggest hypotheses. As such the certainty doesn't have to be as rigorous. After you had a specific set of pairs you had validated, then you would want to definitively test using all the proper correction factors.
In exploratory analysis we face higher risk of the test saying no to a good pair, so we are okay with it being overly sensitive.
In definitive testing we face risk of trading something not really a pair, so we want to make sure the test is very specific and apply all correction factors.
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.
It is potentially an incremental improvement to Jonathan's code:
If I've done it correctly, the Bonferroni correction is applied to each cluster. To get more pairs, one can simply increase the p-value. For example, I've increased it to p = 0.2 in the attached notebook, and now get 6 pairs:
[(Equity(1665 [CMS]), Equity(21964 [XEL])), (Equity(5792 [PCG]), Equity(18584 [LNT])),
(Equity(1023 [BOH]), Equity(11215 [UMBF])),
(Equity(3675 [EQC]), Equity(11478 [FR])),
(Equity(3675 [EQC]), Equity(33026 [DCT])),
(Equity(3675 [EQC]), Equity(39204 [PDM]))]
Generally, my point is that the pair search algorithm should account for cluster size, since if I understand this multiple comparisons jazz correctly, the probability of spitting out spurious pairs goes up with cluster size.
I'm still getting up the learning curve, but I gather that one would run so-called ROC curves, to compare various approaches (e. g. brute force, clustering with no Bonferroni correction, clustering with Bonferroni correction, etc.). Basically, the notebook is spitting out pairs that are hypothetically trade-able. So, with a way to determine the true trade-ability of the pairs, one could do a set of ROC curves, to compare the power of detecting pairs. How would one score the trade-ability of a pair?
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.

A platform for discovering patterns.
in the assets you trade.
You select the asset and indicators you want to analyze.
We use machine-learning algorithms to discover patterns.
You use those patterns to create reliable trading strategies.
Save time by using our cleaned,
reliable, and transparent data.
Over 100 technical indicators.
All major currency pairs.
Discover new trading strategies.
using machine learning algorithms.
Best-in-class machine-learing algorithms.
See the underlying patterns in your data.
Actionable rules that you can.
understand and trade.
Export to your trading platform or have our financial software developer Elinext embed it for you.

Comments

Popular posts from this blog

Cartão do clube dos bilionários forex

Enforex salamanca bewertungen

Chart stock options