Monday, 9 April 2018

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


Uma plataforma para descobrir padrões.
nos ativos que você negocia.
Você seleciona o ativo e os indicadores que deseja analisar.
Usamos algoritmos de aprendizado de máquina para descobrir padrões.
Você usa esses padrões para criar estratégias de negociação confiáveis.
Economize tempo usando nossa limpeza,
dados confiáveis ​​e transparentes.
Mais de 100 indicadores técnicos.
Todos os principais pares de moedas.
Descubra novas estratégias de negociação.
usando algoritmos de aprendizado de máquina.
Melhores algoritmos de aprendizado de máquinas.
Veja os padrões subjacentes em seus dados.
Regras acionáveis ​​que você pode.
entender e negociar.
Exporte para a sua plataforma de negociação ou peça ao nosso desenvolvedor de software financeiro Elinext para você.

Sistemas de negociação de aprendizado de máquina.
O SPDR S & P 500 ETF (SPY) é um dos produtos de ETF amplamente negociados no mercado, com cerca de US $ 200 bilhões em ativos e volume de negócios médio de pouco menos de 200 milhões de ações diariamente. Assim, a probabilidade de ser capaz de desenvolver um sistema de negociação lucrativo usando informações publicamente disponíveis pode parecer pequena. Então, para nos dar uma chance de lutar, vamos nos concentrar em uma tentativa de prever o movimento durante a noite no SPY, usando dados da sessão do dia anterior.
Além dos preços de abertura / alta / baixa e fechamento da sessão do dia anterior, selecionamos várias outras variáveis ​​plausíveis para construir o vetor de recursos que usaremos em nosso modelo de aprendizado de máquina:
O volume diário O preço de fechamento do dia anterior As médias móveis de 200 dias, 50 dias e 10 dias do preço de fechamento Os preços altos e baixos de 252 dias da série SPY.
Vamos tentar construir um modelo que prevê o retorno overnight no ETF, ou seja, [O (t + 1) - C (t)] / C (t)
Neste exercício, usamos dados diários desde o início da série SPY até o final de 2014 para construir o modelo, que será testado em dados fora da amostra, de janeiro de 2015 a agosto de 2016. Em um contexto de alta frequência uma quantidade considerável de tempo seria gasto na avaliação, limpeza e normalização dos dados. Aqui enfrentamos muito menos problemas desse tipo. Normalmente, padronizamos os dados de entrada para equalizar a influência de variáveis ​​que podem ser medidas em escalas de ordens de grandeza muito diferentes. Mas neste exemplo todas as variáveis ​​de entrada, com exceção do volume, são medidas na mesma escala e, portanto, a padronização é desnecessária.
Primeiro, os dados na amostra são carregados e usados ​​para criar um conjunto de regras de treinamento que mapeiam o vetor de recursos para a variável de interesse, o retorno noturno:
No Mathematica 10, a Wolfram introduziu um conjunto de algoritmos de aprendizado de máquina que inclui regressão, vizinho mais próximo, redes neurais e florestas aleatórias, juntamente com funcionalidade para avaliar e selecionar a melhor técnica de aprendizado de máquina. Esses recursos fazem com que seja muito fácil criar um classificador ou um modelo de previsão usando algoritmos de aprendizado de máquina, como este exemplo de reconhecimento de manuscrito:
Criamos um modelo preditivo no conjunto de treinamento SPY, permitindo que o Mathematica escolha o melhor algoritmo de aprendizado de máquina:
Há várias opções para a função Prever que podem ser usadas para controlar a seleção de recursos, o tipo de algoritmo, o tipo de desempenho e a meta, em vez de simplesmente aceitar os padrões, como fizemos aqui:
Tendo construído nosso modelo de aprendizado de máquina, carregamos os dados fora de amostra de janeiro de 2015 a agosto de 2016 e criamos um conjunto de testes:
Em seguida, criamos um objeto PredictionMeasurement, usando o modelo Nearest Neighbor, que pode ser usado para análise posterior:
Não há muita dispersão nas previsões do modelo, todas com valor positivo. Uma técnica comum em tais casos é subtrair a média de cada uma das previsões (e também podemos padronizá-las dividindo pelo desvio padrão).
O gráfico de dispersão dos retornos noturnos reais versus previstos no SPY agora se parece com isso:
Ainda há uma falta óbvia de dispersão nos valores previstos, em comparação com os retornos reais durante a noite, que poderíamos corrigir por meio de padronização. De qualquer forma, parece haver uma relação pequena e não linear entre os valores previstos e reais, o que traz alguma esperança de que o modelo possa ser útil.
Da previsão para negociação.
Existem vários métodos de implantar um modelo de previsão no contexto da criação de um sistema de negociação. A rota mais simples, que tomaremos aqui, é aplicar um limite e converter as previsões filtradas diretamente em um sinal de negociação. Mas outras abordagens são possíveis, por exemplo:
Combinando as previsões de vários modelos para criar um conjunto de previsões Usando as previsões como entradas para um modelo de programação genética Alimentando as previsões na camada de entrada de um modelo de rede neural projetado especificamente para gerar sinais de negociação, em vez de previsões.
Neste exemplo, criaremos um modelo de negociação aplicando um filtro simples às previsões, escolhendo apenas os valores que excedem um limite especificado. Este é um truque padrão usado para isolar o sinal no modelo do ruído de fundo. Aceitaremos apenas os sinais positivos que excederem o nível do limiar, criando um sistema comercial de longa duração. Ou seja, ignoramos as previsões abaixo do nível do limite. Compramos o SPY no fechamento quando a previsão excede o limite e saímos de qualquer posição longa no dia seguinte. Essa estratégia produz os seguintes resultados pro forma:
Conclusão.
O sistema tem algumas características bastante atraentes, incluindo uma taxa de ganho de mais de 66% e um CAGR de mais de 10% para o período fora da amostra.
Obviamente, esta é uma ilustração muito básica: gostaríamos de incluir comissões de negociação, e o escorregão incorreria na entrada e saída de posições nos períodos pós e pré-mercado, o que impactaria negativamente o desempenho, é claro. Por outro lado, mal começamos a riscar a superfície em termos das variáveis ​​que poderiam ser consideradas para inclusão no vetor de feição, e que podem aumentar o poder explicativo do modelo.
Em outras palavras, na realidade, isso é apenas o começo de um longo e árduo processo de pesquisa. No entanto, este exemplo simples deve ser suficiente para dar ao leitor um gostinho do que está envolvido na construção de um modelo preditivo de negociação usando algoritmos de aprendizado de máquina.
Artigos relacionados.
Cópulas de Correlação.
Construindo Estratégias Sistemáticas & # 8211; Uma nova abordagem.
A história de uma estratégia de HFT.
1 comentário. Deixa novo.
Sistemas de negociação de machine learning [Jonathan Kinlay] O SPDR S & amp; P 500 ETF (SPY) é um dos produtos ETF amplamente negociados no mercado, com cerca de US $ 200 bilhões em ativos e volume de negócios médio de pouco menos de 200 milhões de ações diariamente. Assim, a probabilidade de ser capaz de desenvolver um sistema de negociação lucrativo usando informações publicamente disponíveis pode parecer pequena. Então, para nos dar uma chance de lutar, vamos nos concentrar em uma tentativa de prever o [& # 8230;]

Aprendizado de máquina em pares, estratégias de negociação
Não há trecho porque este é um post protegido.
Encontrando Alfa em 2018.
Dado o atual ambiente macroeconômico, onde os investidores devem focar sua busca por fontes de alfa no próximo ano? Ao perguntar a economistas ou gestores de investimento suficientes, você encontrará tantas opiniões diferentes sobre o assunto quanto se preocuparia, sem dúvida muitas delas conflitantes. Estes são alguns pensamentos sobre o assunto da minha perspectiva, como um quantitativo & # 8230;
Negociando Bitcoin.
Na Systematic Strategies, desenvolvemos uma nova e brilhante estratégia de investimento. Nós chamamos isso de comprar Bitcoin. Funciona assim: você pega um pouco do seu fiat e usa-o para comprar Bitcoin. Então, uma semana ou duas depois, você faz a mesma coisa novamente. Até agora, a estratégia está em torno de 400% no acumulado do ano. & # 8230;
Negociação de Futuros Sistemáticos.
Em sua negociação proprietária, o foco principal da Systematic Strategies é em estratégias de capital e volatilidade, tanto de baixa quanto de alta frequência. Nos futuros, a ênfase está na negociação de alta frequência, embora também tenhamos uma ou duas estratégias de baixa frequência com maior capacidade, como o Futures WealthBuilder. A versão do WealthBuilder em execução no Collective & # 8230;
Analisando o conjunto de dados FDIC.
Um processo Winer.
Sem dúvida, muitos de vocês, leitores atentos, terão detectado um erro ortográfico, pensando que eu pretendia me referir a um deles: Mas, na verdade, eu realmente tinha em mente algo mais assim: Estamos seguindo um exemplo dos últimos publicado Mathematica Beyond Mathematics por Jose Sanchez Leon, um texto atualizado que & # 8230;
A história de uma estratégia de HFT.
Cópulas de Correlação.
Continuando um post anterior, no qual modelamos a relação nos níveis do Índice VIX e os Índices de Correlação CBOE do Ano 1 e Ano 2, voltamos nossa atenção para as mudanças de modelagem no índice VIX. Caso você tenha perdido, o post pode ser encontrado aqui: Cointegração de Correlação Vimos anteriormente que & # 8230;
Uma estratégia de equidade tática.
Criamos uma estratégia de patrimônio a longo prazo que visa superar o benchmark de retorno total do S & amp; P 500 usando algoritmos de alocação táticos para investir em ETFs de capital. Um dos principais objetivos da estratégia é proteger os investidores & # 8217; capital durante os períodos de estresse severo do mercado, como nas desacelerações de 2000 e 2008 & # 8230;.
Cointegração de Correlação.
Em um post anterior, procurei maneiras de modelar a relação entre o Índice CBOE VIX e os Índices de Correlação CBOE do Ano 1 e do Ano 2: Modelando Volatilidade e Correlação Perguntou-me se os índices VIX e de correlação poderiam ser cointegrados. Vamos começar observando o padrão de & # 8230;

Aprendizado de máquina em pares, estratégias de negociação
Um tipo de algoritmo popular e bem-sucedido que vejo no Quantopian é o Pairs Trading. Embora essa categoria de estratégias possa exibir características de desempenho atraentes, muitas vezes vejo algoritmos de comunidade que têm um conjunto muito pequeno de pares elegíveis. Como em qualquer estratégia quant, 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) do que menos. O caderno abaixo mostra um exemplo concreto de uso de técnicas de aprendizado de máquina, prontamente disponíveis no scikit-learn, para encontrar pares. A suposição aqui é que esses pares têm uma alta probabilidade de continuar exibindo comportamento de reversão da média fora da amostra - uma meta 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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
@ Jonathan. Muito obrigado por isso. Este é um notebook realmente interessante para ilustrar o uso de ML para auxiliar na análise e descoberta de relacionamento. Suficiente de aplicação direta do ML aos dados do mercado (OHLCV). Obrigado por avançar a fronteira. Novamente.
HI @ Jonathan, esta é uma pesquisa extremamente boa e definitivamente irei passando por cada etapa e fazendo minha própria análise detalhada.
Eu tenho um par de questões 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 ajustar os requisitos para uma alocação.
a) O alfa da estratégia se origina do conjunto de dados (financial_health_grade). Pareceu-me que a suposição de que ações do mesmo financial_health_grade se comportam de maneira semelhante é feita no início do processo. Mas o agrupamento parece estar usando o preço das ações para chegar aos clusters. O alfa será considerado parte do conjunto de dados ou do algoritmo de agrupamento. Estou fazendo esta pergunta porque houve um impulso recentemente para encontrar alfa nos conjuntos de dados que o Quantopian fornece e não tenho certeza se uma justificativa econômica pode ser feita de que o alpha foi derivado diretamente do financial_health_grade.
b) Eu também tenho uma questão geral com os pares negociando como uma estratégia para a alocação de fundos Q. A negociação de pares se encaixa nos requisitos dos critérios de alocação de fundos Q, onde precisamos controlar os riscos beta, de setor e de concentração de posições para estar dentro de certos limites que são atingidos normalmente por meio do order_optimal_portfolio e do subjacente cvxopt. Se soubermos quais pares vamos negociar, talvez nem sempre seja possível encaixar bem com o algoritmo subjacente em order_optimal_portfolio para seleção de ações com exposições de risco controladas.
Independentemente das minhas perguntas sobre alocação de Q, definitivamente parece uma área muito interessante para explorar mais.
Obrigado por compartilhar este trabalho. Um dos meus objetivos com o Quantopian é aprender algumas técnicas de ML; Eu me beneficiarei de ver seu notebook detalhadamente.
Alguns comentários iniciais:
Você faz o agrupamento, seguido pela análise de pares. Mas como isso se compara a encontrar pares escolhendo aleatoriamente pares de todo o universo e testando-os? Em outras palavras, se eu estiver disposto a esperar N minutos / horas / dias para encontrar os pares M, quanto benefício o clustering proporciona sobre uma técnica de força bruta? E eu esperaria que a habilidade comercial fosse melhor para os pares da técnica de agrupamento, sobre força bruta?
Eu posso abordar alguns desses pontos.
Apenas olhar através de todos os pares produzirá uma enorme quantidade de viés de comparações múltiplas, quantopian / lectures / p-hacking-and-multiple-comparisons-bias, o que tornaria os resultados não úteis. A vantagem de uma técnica de clustering é permitir que você faça uma primeira passagem que possa sugerir cestas relacionadas, efetivamente reduzindo a dimensionalidade dos recursos. Dentro deste novo conjunto menor, você pode escolher candidatos prováveis ​​e fazer o teste 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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
@Anthony, A seu ponto, eu acho que existem muitas aplicações de ML que podem ser valiosas para um processo de investimento além de tentar encaixar e prever preços / retornos diretamente. isso é apenas um exemplo. Combinação de sinal, como descrito nesta série popular é outra ótima aplicação.
a) O alfa da estratégia se origina do conjunto de dados (financial_health_grade). Pareceu-me que a suposição de que ações do mesmo financial_health_grade se comportam de maneira semelhante é feita no início do processo. Mas o agrupamento parece estar usando o preço das ações para chegar aos clusters. O alfa será considerado parte do conjunto de dados ou do algoritmo de agrupamento. Estou fazendo esta pergunta porque houve um impulso recentemente para encontrar alpha nos conjuntos de dados que a Quantopian fornece e não tenho certeza se uma justificativa econômica pode ser feita de que o alpha foi derivado diretamente do financial_health_grade,
Minha análise não pretende dizer nada sobre qualquer alfa incorporado no financial_health_grade. Pode haver algum alfa lá, mas essa análise não exige isso. Estou simplesmente dizendo que os estoques com graus de saúde semelhantes devem ter reações econômicas semelhantes e comportamento dos preços das ações. Eu uso os preços das ações, convertidos em retornos e, em seguida, reduzidos para 50 carregamentos de PCA, para fazer o agrupamento junto com o valor de mercado e financial_health_grade. A matriz de recursos para o clustering tem 52 colunas: 50 são os loadings do PCA, um é o financial_health_grade e um é o valor 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, não relacionado ao meu post.
b) Eu também tenho uma questão geral com os pares negociando como uma estratégia para a alocação de fundos Q. A negociação de pares se encaixa nos requisitos dos critérios de alocação de fundos Q, onde precisamos controlar os riscos beta, de setor e de concentração de posições para estar dentro de certos limites que são atingidos normalmente por meio do order_optimal_portfolio e do subjacente cvxopt. Se soubermos quais pares vamos negociar, talvez nem sempre seja possível encaixar bem com o algoritmo subjacente em order_optimal_portfolio para seleção de ações com exposições de risco controladas.
Sim! Um par de pares é muito adequado para uma alocação de fundos Q. Uma característica dos pares algos que é muito boa é que os lados longos e curtos são naturalmente balanceados com ativos auto-similares. Assim, um livro de pares, muitas vezes sem qualquer massagem adicional, é naturalmente beta e setorialmente neutro. O desafio com pares algos é muitas vezes chegando com pares válidos o suficiente e, de forma relacionada, alcançando uso consistente de capital. Há um exemplo aqui que usa order_optimal_portfolio dentro de um algoritmo de pares.
Eu concordo com a resposta de Delaney. Em relação ao teste de Johansen, notei este post solitário que aponta para uma implementação em Python que você pode copiar / colar. Eu não tentei isso.
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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
@ Jonathan, obrigado por explicar detalhadamente e fornecer indicadores úteis, incluindo as alterações no order_optimal_portfolio que são necessárias para acompanhar a estratégia de negociação de Paris. Vejo agora como a própria estratégia de negociação de pares pode reduzir as exposições ao risco e por que não precisamos de order_optimal_portfolio para fazer isso para nós nessa estratégia.
Eu tinha ficado longe do que parecem ser estratégias baseadas em preços puros antes, porque eu tinha desenvolvido alguns equívocos que os algoritmos de tipo de reversão Média não estavam sendo favorecidos na alocação de Q depois de ler alguns posts no fórum, obrigado por esclarecer a situação.
Este é um tema muito interessante para explorar e eu definitivamente estaria gastando algum tempo nesta área em breve expandindo o seu excelente trabalho de pesquisa.
Não obtenho a decomposição do 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; Saúde financeira & # 39;] [returns. columns].values ​​[:, np. newaxis])
Essencialmente, você tem 504 amostras de dados com cerca de 1400 recursos que você deseja reduzir para 50. Ou seja, 504 amostras de 50 recursos. A fit_transform encontra os novos eixos e transforma os dados. Você acabou de usar os eixos.
Em relação ao viés de comparações múltiplas, eu ainda não tenho uma sensação intuitiva sobre isso. Digamos que eu tenha uma caixa de 1000 palitos e eu 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. Arregaço as mangas e começo a fazer comparações aleatórias entre pares. Depois de 1000 * 999/2 = 499,500 comparações, estou pronto, e tenho uma lista de pares de palitos de dente (eu esqueci de mencionar, antes da minha avaliação, eu tinha cada palito gravado a laser com um número de série). Então, onde entra o preconceito?
Acho que a ideia aqui é que, se eu tiver algumas informações adicionais sobre os palitos de dente, além do peso e do comprimento, poderei usá-lo para melhorar minha avaliação. Por exemplo, se os palitos de dente são coloridos (para as férias), vermelho e verde, posso supor que os palitos vermelhos foram feitos em uma fábrica de palitos vermelhos e os verdes em uma fábrica separada. Nesse caso, agrupar por cor pode ajudar a melhorar minha avaliação e reduzir o número de pares espúrios. Mas se os palitos de dente forem todos feitos na mesma fábrica, e o processo de coloração não afetar o peso e / ou o comprimento de maneira diferente por cor, então eu poderia estar alegando que descobri uma técnica melhorada para emparelhar palitos, mas não fez nada substantivo.
Para a análise de Jonathan, estou pensando que a hipótese é algo como "Toda essa análise sofisticada funciona e reduz o número de pares cointegrados espúrios, ao longo de uma abordagem de força bruta". Assim, parece que seria necessário fazer a análise de força bruta e, em seguida, descobrir como compará-lo com a técnica proposta, para determinar se é benéfico. Pode ser "a bomba"; mas para mim a vantagem não é clara (além de talvez reduzir o problema a ser mais computacionalmente tratável com os recursos disponíveis).
Um par de pares é muito adequado para uma alocação de fundos Q.
Intuitivamente, como outras técnicas de quantificação bem conhecidas que usam dados prontamente disponíveis (por exemplo, reversão da média de preços), acho que haveria captações muito pequenas por aí. Minha suposição é que, por décadas, os fundos de hedge tiveram grandes honkin & # 39; computadores agitando o problema, espremendo o alfa da troca de pares. Eu não tenho experiência na indústria, mas não parece que o Quantopian tenha alguma vantagem nessa área. Dito isso, talvez como um fator alfa incremental no grande esquema multifatorial descrito no post do blog de Jonathan, pode-se colocá-lo no mix, apenas por causa do yuck. Seria factível formular pares negociando como um fator alfa de pipeline geral?
Como comentário geral, eu concordo que a mensagem sobre o que é mais provável conseguir uma atribuição é confusa. Por um lado, temos a diretiva para usar & quot; conjuntos de dados alternativos & quot; e, por outro, a orientação que combina a negociação, possivelmente usando apenas fundamentos da empresa e dados de preço-volume, seria atraente. E também orientação de que algos multifatoriais são desejáveis ​​(mas talvez apenas se todos os fatores forem baseados em conjuntos de dados alternativos?). Pessoalmente, eu não quero gastar os 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, apenas para saber que minhas chances de conseguir uma alocação são escassos devido à intenção estratégica de não corresponder aos requisitos (esta é a mensagem que acho que recebi relativamente às estratégias de reversão à média dos preços e possivelmente até aos fatores alfa de reversão da média dos preços. Não tenho a certeza). Em certo sentido, uma vantagem que a Quantopian tem sobre os fundos de hedge tradicionais é que eles podem ignorar totalmente a intenção estratégica e apenas basear suas avaliações e alocações no desempenho do algoritmo de caixa preta. Isso eliminaria o risco de mentalidade de rebanho ou preconceitos pessoais por parte da equipe do fundo. Basta ir com os dados.
O notebook é ótimo. Eu acho que todo mundo entende que o exemplo aqui (palestra 24) referenciado de passagem foi meramente fornecido como um ponto de partida para pares negociados naquela época, eu vou apenas moderar um pouco, não dissecar demais, mas já que eu Deu uma olhada, então para aqueles que podem viajar por esse caminho, algumas coisas para saber. Se clonar isso, a data final é ajustada automaticamente para hoje e por isso não é surpresa que desde que se originou há algum tempo atrás, 3 das suas 4 ações foram retiradas, pelo que estes comentários aplicam-se apenas ao final de 2015 antes os delists (antes do primeiro em fevereiro de 2016). Ele atinge uma alavancagem de 1,36 em um ponto e, como sempre, é algo para nós mantermos um olho. Seu FixedSlippage resulta em nenhum preenchimento parcial que pode ser útil para testes às vezes, da Ajuda: o uso ingênuo de modelos de deslizamento fixo 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 de capital se torne apenas 9%. Assim, a linha de slippage pode ser comentada para slippage padrão e, em seguida, em 1M há uma média de [integer edited later porque pode ter havido um bug na contagem neste momento] minutos de preenchimentos parciais por ação, e o efeito recebe retornos de +29 a -16 e reduz a alavancagem máxima para .52. Tanto o par ABGB quanto o FSLR sofreram perdas. Não é um grande negócio, pois é apenas um ponto de partida para construir, há também o outro algoritmo de negociação de pares (mais básico, palestra 23) na série de palestras que vale a pena conhecer.
Essencialmente, você tem 504 amostras de dados com cerca de 1400 recursos que você deseja reduzir para 50. Ou seja, 504 amostras de 50 recursos. A fit_transform encontra os novos eixos e transforma os dados. Você acabou de usar os eixos.
É intencional que eu não faça a transformação dos dados. A interpretação financeira é que os componentes são betas por ação para fatores estatísticos ocultos. Quando você passa com fit_transform (.) Você obtém a série temporal de cada fator oculto. Não quero isso. Eu simplesmente quero agrupar os betas.
@Grant, coiote verde-oliva,
Não concordo que este trabalho seja para benefício exclusivo do tempo de computação. A principal diferença entre encontrar pares e sua analogia com o palito é que o resultado da busca do palito será a verdade básica, mas isso não acontece no trabalho estatístico. O palito mais curto de hoje não deixa de ser o palito mais curto amanhã. Uma busca por pares de força bruta certamente trará muitos resultados espúrios. Para proteger contra a mineração de dados, você deve condicionar 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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Eu postei este exemplo, que pode ser de interesse.
Esse exemplo é baseado em um exemplo nos documentos do scikit-learn aqui. Se você pensar sobre este trabalho como um processo de três etapas: 1) definir características, 2) cluster, 3) visualizar, eu escolhi 1) PCA + financial_health_grade + market cap, 2) DBSCAN, 3) T-SNE; o exemplo citado escolheu 1) covariance. GraphLassoCV nas alterações de preço intradiário, 2) Propagação de afinidade e 3) Incorporação localmente linear.
Eu havia reproduzido isso na Pesquisa Quantopiana há algum tempo. Não exibimos 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 é possível 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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Obrigado pelo exemplo adicional.
Para os palitos, existe um erro de medição do peso e comprimento, portanto, apenas escolhendo aleatoriamente resultará em alguns pares que não são corretos. Mas, se o agrupamento por cor resultar em mais uniformidade em cada cluster, ele deverá ajudar. Por exemplo, se as diferenças fossem pequenas e não fossem bem resolvidas pelas medições, o fator de cor poderia fornecer um impulso. Pelo menos essa é a minha intuição, mas preciso dormir nela e ler um pouco mais sobre o viés de comparações múltiplas (se é que isso está realmente em jogo aqui).
Não estou dizendo que o agrupamento, etc., não ajuda as ações, mas apenas se você não compará-las à força bruta, não há como saber. Então, se você está tentando mostrar o benefício sobre a força bruta, você precisará fazer um pouco mais de trabalho.
Depois de ler este caderno, precisei apenas de um experimento para verificar se havia algo nesse agrupamento de estoques correlacionados. Já que o notebook está olhando para um universo de ações do seu ponto de vista (1337), optei por simplesmente mudar sua semente aleatória, sem mudar nada. Desta forma, tudo o que mudou é esse buraco no passado.
Aqui está o resultado dos 4 testes:
O agrupamento que deveria ter sido apenas ligeiramente diferenciável, está em todo lugar. O ponto é que fora das possibilidades de gazillion, gazilhões eram possíveis. E, portanto, qualquer estratégia comercial que possa ser construída a partir de qualquer uma dessas percepções pode não levar isso adiante.
Meu jeito de dizer: não vejo nada lá. Ou estou faltando alguma coisa?
O T-SNE é um passo de visualização; não afeta a formação dos clusters. O T-SNE destina-se a validar visualmente que os clusters são distintos. Para mim, sua experiência valida a solidez desses agrupamentos, e não o contrário. Com os vários parâmetros de estado aleatórios escolhidos, em todos os casos, os clusters permanecem intactos e claramente separáveis ​​no espaço. As formas de cluster individuais são, em muitos casos, as mesmas (apenas giradas no espaço). A localização dos clusters no plano não é importante. O parâmetro de estado aleatório serve para simplesmente informar a representação artística da trama.
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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Eu acho que você traz um grande exemplo de uma das diferenças fundamentais entre os sistemas estudados em engenharia e sistemas estudados em finanças. Geralmente na engenharia, o passado é representativo do futuro. O peso de um palito não mudará com o tempo (pelo menos por muito), e outras propriedades também são as mesmas ao longo do tempo. Referimo-nos a isso mais geralmente como estacionariedade. Nos sistemas de engenharia estudados são semelhantes, as leis da física se mantêm ao longo do tempo. Uma ponte construída de uma maneira que se levanta agora provavelmente se levantará amanhã. O oposto é verdadeiro em finanças e muitos outros sistemas mais voláteis e menos estacionários.
A suposição implícita em muitas abordagens de engenharia é que o passado implica o futuro. Em finanças, essa suposição não é dada e deve, por si só, ser verificada.
Considere se os pesos dos palitos estavam mudando ao longo do tempo e retirados de algum processo estocástico desconhecido. Este é efetivamente o caso aqui. Quando a não-estacionaridade existe, você não pode simplesmente assumir que o passado implica futuro. Você precisa entender mais do sistema e modelar efetivamente o que está acontecendo. No final do dia, você quer produzir estacionariedade em seus resíduos (erro de modelo), pois isso significa que você explicou qualquer não-estacionariedade no sistema. Se você acabou de pesquisar seus dados a partir de palitos de ontem, pode não haver relação com palitos de amanhã.
O que o clustering está fazendo é procurar por palitos de dentes com propriedades que acreditamos serem mais prováveis ​​de torná-los semelhantes, efetivamente os fatores determinantes do relacionamento. No que diz respeito a comparações múltiplas, recomendo que você realmente passe pela palestra e suja as mãos. Há experimentos reais com os quais você pode se meter e ver por si mesmo se não acredita em mim.
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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.
Eu sei sobre estacionariedade. Na manufatura, é um conceito-chave no controle estatístico de processos (por exemplo, veja o gráfico de controle de Shewhart descrito no site NIST). Na negociação, as bandas de Bollinger são basicamente gráficos de controle com uma aposta na estacionariedade.
Tanto quanto eu posso dizer, o problema de múltiplas comparações não tem nada a ver com estacionariedade. É uma armadilha geral associada à realização de testes estatísticos repetidos e à descoberta de um número crescente de falsos positivos com o número de testes. No caso do peso do palito, suponha que minha pergunta seja: "Eu tenho um monte de palitos de dente acima de 101 g?" e na minha caixa de 1000 palitos, não há nenhum acima de 100 g (mas muito bem em 100 g). Se eu usar um cheapo & quot; noisy & quot; escala de peso, a probabilidade de responder incorretamente sobe, com o número de palitos que eu meço (aproximando assintoticamente uma resposta de "sim" quando a resposta correta é "não"). A solução para o problema é obter uma melhor escala de peso. No caso de pares de ações, se a pergunta for "Tenho um monte de pares de ações que eu possa negociar com lucro?" e eu procuro a força bruta com uma técnica marginal, então eu respondo & quot; sim & quot; (e perder dinheiro) quando a resposta correta é "não" (e não perder dinheiro). A abordagem da força bruta para encontrar pares de ações funcionaria se houvesse um teste melhor.
A questão que vejo aqui é que a análise precisa testar tanto a cointegração quanto sua estacionariedade. O último é o que realmente importa para a negociação, portanto, para mostrar que o clustering é uma melhoria em relação à seleção de pares de força bruta, seria necessário observar a persistência da conintegração de cada par versus tempo. Se eu estou pensando sobre isso corretamente, é preciso encontrar técnicas que cuspam pares com cointegração persistente. Presumivelmente, o agrupamento ajuda, mas ainda é uma questão em aberto.
Uma sugestão é considerar se usar dados minuciosos ajudaria. Em ciência / engenharia, uma técnica comum para melhorar a relação sinal-ruído (SNR) é aumentar a taxa de amostragem, suavizar e depois reduzir a amostragem (para armazenamento de dados, cálculos, etc.). Por exemplo, em vez de usar preços de fechamento diários, estime o VWAP diário a partir das barras de minutos e use-o em seu lugar (a menos que haja algo especial sobre o último preço comercial do dia). As & quot; barras de erro & quot; será muito menor.
Além disso, as análises podem levar em conta as barras de erro. Por exemplo, para dados x-y que possuem barras de erro desiguais, pode-se fazer um ajuste linear, aplicando menos peso a pontos com barras de erro maiores. Existe uma maneira de explicar as barras de erro ao procurar pares?
@ Jonathan, mesmo que eu possa ver a arte da separação de clusters, isso não significa que eu possa extrair lucros valiosos quando eles se movem de quadrante para quadrante, mudando seu centro de massa, seu eixo e tamanho. É como acertar um alvo em movimento que pode mudar de forma e direção de segundo para segundo, quase como atirar no escuro. Uma ilusão: oops, estava lá e agora não está. Para onde foi? Oops, mudou-se novamente.
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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou 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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou 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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou 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 para fornecer serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou 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?
Note that Jonathan is no longer with Quantopian (although I guess he could still be active as a user. haven't seen any activity since he left, however).
Desculpe, algo deu errado. Tente novamente ou entre em contato enviando feedback.
Você enviou com sucesso um ticket de suporte.
Nossa equipe de suporte entrará 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 para fornecer serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou 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 para fornecer serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece opinião com relação à adequação de qualquer investimento específico ou de segurança. Nenhuma informação aqui contida deve ser considerada como uma sugestão para se envolver ou se abster de qualquer ação relacionada ao investimento, já que nenhuma das empresas da Quantopian ou de suas afiliadas está prestando consultoria de investimento, atuando como consultora de qualquer plano ou entidade sujeita a o Employee Retirement Income Security Act de 1974, conforme alterado, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em uma capacidade fiduciária com relação aos materiais aqui apresentados. Se você for um investidor individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado com a Quantopian sobre se qualquer ideia, 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 garante a exatidão ou integridade das opiniões expressas no site. As opiniões estão sujeitas a alterações e podem ter se tornado não confiáveis ​​por várias razões, incluindo mudanças nas condições de mercado ou circunstâncias econômicas.

Comércio Algorítmico Avançado.
Finalmente. implement advanced trading strategies using time series analysis , machine learning and Bayesian statistics with the open source R and Python programming languages, for direct, actionable results on your strategy profitability.
I'm sure you've noticed the oversaturation of beginner Python tutorials and stats/machine learning references available on the internet.
Few tutorials actually tell you how to apply them to your algorithmic trading strategies in an end-to-end fashion .
There are hundreds of textbooks, research papers, blogs and forum posts on time series analysis, econometrics, machine learning and Bayesian statistics.
Nearly all of them concentrate on the theory .
What about practical implementation? How do you use that method for your strategy? How do you actually program up that formula in software?
I've written Advanced Algorithmic Trading to solve these problems.
It provides real world application of time series analysis, statistical machine learning and Bayesian statistics, to directly produce profitable trading strategies with freely available open source software.
500+ pages of professional quantitative trading and risk management techniques Advanced quant methods implemented in easy-to-read R and Python code Download the Table Of Contents.
Instant PDF ebook download - no waiting for delivery Lifetime no-quibble 100% money back guarantee - no risk to you! Download a Sample Chapter.
You're Happy With Basic Programming But Want To Apply Your Skills To More Advanced Quant Trading.
If you've read my previous book, Successful Algorithmic Trading , you will have had a chance to learn some basic Python skills and apply them to simple trading strategies.
However, you've grown beyond simple strategies and want to start improving your profitability and introducing some robust, professional risk management techniques to your portfolio.
In Advanced Algorithmic Trading we take a detailed look at some of the most popular quant finance libraries for both Python and R, including pandas , scikit-learn , statsmodels , QSTrader , timeseries , rugarch and forecast among many others.
We will use these libraries to look at a wealth of methods in the fields of Bayesian statistics, time series analysis and machine learning, using these methods directly in trading strategy research.
We apply these tools in an end-to-end backtesting and risk management scenario , using both R and the QSTrader libraries, allowing you to easily "slot them in" to your current trading infrastructure.
No Need For Expensive Off-The-Shelf Quant Software.
You may have spent a lot of money purchasing some sophisticated backtesting tools in the past and ultimately found them hard to use and not relevant to your style of quant trading.
Advanced Algorithmic Trading makes use of completely free open source software, including Python and R libraries, that have knowledgeable, welcoming communities behind them.
More importantly, we apply these libraries directly to real world quant trading problems such as alpha generation and portfolio risk management.
"But I Don't Have A PhD In Statistics."
While machine learning, time series analysis and Bayesian statistics are quantitative topics, they also contain a wealth of intuitive methods, many of which can be explained without recourse to advanced mathematics .
In Advanced Algorithmic Trading we've provided not only the theory to help you understand what you're implementing (and improve upon it yourself!), but also detailed step-by-step coding tutorials that take the equations and directly apply them to real strategies .
Thus if you're much more comfortable coding than with mathematics, you can easily follow the snippets and start working to improve your strategy profitability.
Sobre o autor.
So who’s behind this?
Oi! My name is Mike Halls-Moore and I'm the guy behind QuantStart and the 'Advanced Algorithmic Trading' package.
Since working as a quantitative trading developer in a hedge fund I have been passionate about quantitative trading research and implementation.
I started the QuantStart community and wrote 'Advanced Algorithmic Trading' to expose practising retail quants to the methods used in quantitative hedge funds and asset management firms.
What Topics Are Included In The Book?
Time Series Analysis.
You'll receive a complete beginner's guide to time series analysis, including asset returns characteristics, serial correlation, the white noise and random walk models.
Time Series Models.
I'll provide a thorough discussion of Autoregressive Moving Average (ARMA) and Autoregressive Conditional Heteroskedastic (ARCH) models using the R statistical environment.
Cointegrated Time Series.
We will continue the discussion on cointegrated time series from Successful Algorithmic Trading and consider the Johansen test, applying it to ETF strategies.
State-Space Models and Kalman Filters.
You'll find an in-depth discussion on how the Kalman Filter can be used to create dynamic hedging ratios between pairs of ETF assets, using freely-available Python tools.
Modelos ocultos de Markov.
You'll get an introduction to Hidden Markov Models and how they can be applied to financial data for the purposes of regime detection.
Aprendizado de Máquina.
We'll discover exactly what "statistical machine learning" is, including supervised and unsupervised learning, and how they can help us produce profitable systematic trading strategies.
Regressão linear.
We will initially use the familiar technique of linear regression, in both a Bayesian and classical sense, as a means of teaching more advanced machine learning concepts.
The Bias-Variance Tradeoff.
I'll talk about one of the most important concepts in machine learning, namely the bias-variance trade-off and how we can minimise its effects using cross-validation.
Tree-Based Methods.
I'll discuss one of the most versatile ML model familes, namely the Decision Tree, Random Forest and Boosted Tree models, and how we can apply them to predict asset returns.
Kernel Methods.
We'll discuss the family of Support Vector Classifiers, including the Support Vector Machine, and how we can apply it to financial data series.
Unsupervised Methods.
I'll explain how you can apply unsupervised learning techniques such as K-Means Clustering to financial OHLCV bar data in order to cluster "candles" into regimes.
Natural Language Processing.
We'll discuss how to apply machine learning methods to a large natural language document corpus and predict categories on unseen test data, as a precursor to sentiment-based models.
Bayesian Statistics.
I'll provide a full introduction to Bayesian probability models, including a detailed look at inference, which forms the basis for more complex models throughout the book.
Markov-Chain Monte Carlo.
You'll learn about MCMC, in particular the Metropolis-Hastings algorithm, which is one of the main techniques for sampling in Bayesian statistics, using the PyMC3 software.
Bayesian Stochastic Volatility.
We'll look at stochastic volatility models under a Bayesian framework, using these to identify periods of large market volatility for risk management.
What Technical Skills Will You Learn?
R: Time Series Analysis.
You will be introduced to R, which is one of the most widely used research environments in quantitative hedge funds and asset managers. We will make use of many libraries including timeseries , rugarch and forecast .
Strategy Decay.
We will use R and Python to estimate our strategy performance over time allowing us to produce strategy decay curves . This will help determine whether a strategy needs to be retired or is still viable and profitable.
Python: Scikit-Learn.
We will dig deeper into the advanced features of scikit-learn , Python's ML library, including parameter optimisation, cross-validation, parallelisation, and produce sophisticated predictive models.
Robust Backtesting.
How to create efficient vectorised and event-driven backtests for preliminary research, with realistic transaction cost assumptions and position handling, using R and the popular QSTrader library.
Python: PyMC3.
We will introduce PyMC3 , the flexible Bayesian modelling, or "Probabilistic Programming" toolkit and Markov Chain Monte Carlo sampler to help us carry out effective Bayesian inference on financial time series data.
Gerenciamento de riscos.
We will continue our risk management discussion from previous books and look at regime detection and stochastic volatility as a means of determining our current risk level and portfolio allocation.
What Trading and Risk Management Strategies Will You Implement?
Monthly Rebalance Portfolios.
We will introduce our backtesting framework with long-term monthly-rebalanced ETF portfolios, across multiple financial markets, comparing our results to a benchmark.
ARIMA+GARCH.
We will look at a linear time series technique based on the ARIMA+GARCH model on a range of equity stock indexes and see how the strategy performance changes over time.
Kalman Filters for Pairs Trading.
We will apply the Bayesian Kalman Filter to cointegrated time series to dynamically estimate the hedging ratio between asset pairs, improving a static estimate of a traditional hedge ratio.
Regime Detection.
We will use Hidden Markov Models to produce a volatility regime detection model. This will be used to veto orders in a short-term trend following strategy to increase profitability.
Asset Returns Forecasting using Machine Learning.
We will use numerous machine learning techniques such as Random Forests to forecast asset direction and level by regressing against other transformed features.
Análise de sentimentos.
We will use sentiment analysis vendor data to generate a sentiment-based trading signal generator, applying it to a set of S&P500 stocks across various market sectors.
Where can you learn more about us?
We have written over 200 posts on QuantStart covering quant trading, quant careers, quant development, data science and machine learning. You can read through the archives to learn more about our trading methodology and strategies.
What if you're not happy with the book?
While we think you will find Advanced Algorithmic Trading very useful in your quantitative trading education, we also believe that if you are not 100% satisfied with the book for any reason you can return it no questions asked for a full refund.
Will you get a hardcopy of the book?
No. At this stage the book is only available in Adobe PDF format, while the code itself is provided as a zip file of fully functional R and Python scripts, if you purchase the "Book + Software" option.
Which package should you buy?
This mostly depends on your budget. The book with full extra source code is the best if you want to dig into the code immediately, but the book itself contains a huge amount of code snippets that will aid your quant trading process.
Can we be contacted?
Claro! If you still have questions after reading this page please get in touch and we will do our best to provide you with a necessary answer. However, please take a look at the articles list, which may also help you.
Will you need a degree in mathematics?
The majority of the book requires an understanding of calculus, linear algebra and probability. However, many of the methods are intuitive and the code can be followed without recourse to advanced mathematics.

Machine Learning Trading Systems.
The SPDR S&P 500 ETF (SPY) is one of the widely traded ETF products on the market, with around $200Bn in assets and average turnover of just under 200M shares daily. So the likelihood of being able to develop a money-making trading system using publicly available information might appear to be slim-to-none. So, to give ourselves a fighting chance, we will focus on an attempt to predict the overnight movement in SPY, using data from the prior day’s session.
In addition to the open/high/low and close prices of the preceding day session, we have selected a number of other plausible variables to build out the feature vector we are going to use in our machine learning model:
The daily volume The previous day’s closing price The 200-day, 50-day and 10-day moving averages of the closing price The 252-day high and low prices of the SPY series.
We will attempt to build a model that forecasts the overnight return in the ETF, i. e. [O(t+1)-C(t)] / C(t)
In this exercise we use daily data from the beginning of the SPY series up until the end of 2014 to build the model, which we will then test on out-of-sample data running from Jan 2015-Aug 2016. In a high frequency context a considerable amount of time would be spent evaluating, cleaning and normalizing the data. Here we face far fewer problems of that kind. Typically one would standardized the input data to equalize the influence of variables that may be measured on scales of very different orders of magnitude. But in this example all of the input variables, with the exception of volume, are measured on the same scale and so standardization is arguably unnecessary.
First, the in-sample data is loaded and used to create a training set of rules that map the feature vector to the variable of interest, the overnight return:
In Mathematica 10 Wolfram introduced a suite of machine learning algorithms that include regression, nearest neighbor, neural networks and random forests, together with functionality to evaluate and select the best performing machine learning technique. These facilities make it very straightfoward to create a classifier or prediction model using machine learning algorithms, such as this handwriting recognition example:
We create a predictive model on the SPY trainingset, allowing Mathematica to pick the best machine learning algorithm:
There are a number of options for the Predict function that can be used to control the feature selection, algorithm type, performance type and goal, rather than simply accepting the defaults, as we have done here:
Having built our machine learning model, we load the out-of-sample data from Jan 2015 to Aug 2016, and create a test set:
We next create a PredictionMeasurement object, using the Nearest Neighbor model , that can be used for further analysis:
There isn’t much dispersion in the model forecasts, which all have positive value. A common technique in such cases is to subtract the mean from each of the forecasts (and we may also standardize them by dividing by the standard deviation).
The scatterplot of actual vs. forecast overnight returns in SPY now looks like this:
There’s still an obvious lack of dispersion in the forecast values, compared to the actual overnight returns, which we could rectify by standardization. In any event, there appears to be a small, nonlinear relationship between forecast and actual values, which holds out some hope that the model may yet prove useful.
From Forecasting to Trading.
There are various methods of deploying a forecasting model in the context of creating a trading system. The simplest route, which we will take here, is to apply a threshold gate and convert the filtered forecasts directly into a trading signal. But other approaches are possible, for example:
Combining the forecasts from multiple models to create a prediction ensemble Using the forecasts as inputs to a genetic programming model Feeding the forecasts into the input layer of a neural network model designed specifically to generate trading signals, rather than forecasts.
In this example we will create a trading model by applying a simple filter to the forecasts, picking out only those values that exceed a specified threshold. This is a standard trick used to isolate the signal in the model from the background noise. We will accept only the positive signals that exceed the threshold level, creating a long-only trading system. i. e. we ignore forecasts that fall below the threshold level. We buy SPY at the close when the forecast exceeds the threshold and exit any long position at the next day’s open. This strategy produces the following pro-forma results:
Conclusão.
The system has some quite attractive features, including a win rate of over 66% and a CAGR of over 10% for the out-of-sample period.
Obviously, this is a very basic illustration: we would want to factor in trading commissions, and the slippage incurred entering and exiting positions in the post - and pre-market periods, which will negatively impact performance, of course. On the other hand, we have barely begun to scratch the surface in terms of the variables that could be considered for inclusion in the feature vector, and which may increase the explanatory power of the model.
In other words, in reality, this is only the beginning of a lengthy and arduous research process. Nonetheless, this simple example should be enough to give the reader a taste of what’s involved in building a predictive trading model using machine learning algorithms.
Artigos relacionados.
A Winer Process.
Estratégias Tácticas de Fundos Mútuos.
Negociação de Futuros Sistemáticos.
1 comentário. Deixa novo.
[…] Machine Learning Trading Systems [Jonathan Kinlay] The SPDR S&P 500 ETF (SPY) is one of the widely traded ETF products on the market, with around $200Bn in assets and average turnover of just under 200M shares daily. So the likelihood of being able to develop a money-making trading system using publicly available information might appear to be slim-to-none. So, to give ourselves a fighting chance, we will focus on an attempt to predict the […]

No comments:

Post a Comment