Wednesday, 14 March 2018

Estratégia de negociação do modelo markov ocultos


Gekko Quant - Negociação Quantitativa.
Comércio Quantitativo, Arbitragem Estatística, Aprendizado de Máquinas e Opções Binárias.
Pós-navegação.
Modelos de Markov ocultos e # 8211; Modelo Descrição Parte 1 de 4.
Modelos de Markov ocultos.
Esta publicação desenvolverá um quadro geral para tarefas de classificação usando modelos markov ocultos. A série de tutorial abordará a forma de construir e treinar modelos de markov escondidos em R. Inicialmente, as matemáticas serão explicadas, então um exemplo em R fornecido e, em seguida, uma aplicação em dados financeiros será explorada.
Framework Geral de Reconhecimento de Padrões.
Um conjunto de recursos é derivado do conjunto de dados e uma classe identificada ao encontrar a classe mais provável, dado os dados.
No entanto, é desconhecido, então Bayes & # 8217; A regra deve ser usada.
Uma vez que a maximização não depende, podemos ignorá-la. Os termos e, são a probabilidade de os dados dados a classe e a probabilidade anterior de uma classe respectiva, ambos os termos são definidos por um modelo. O modelo de característica será descrito pelo modelo de Markov oculto (HMM), cada classe terá o próprio HMM.
A tarefa em mãos.
Primeiro, precisamos gerar um conjunto de recursos a partir dos dados brutos. Vou ignorar este passo por agora, porque é específico para a aplicação do seu modelo de Markov oculto, por exemplo, em finanças, podem ser vários preços das ações e podem ser um conjunto de indicadores técnicos / cálculos de volatilidade aplicados aos dados. HMM & # 8217; s são populares no reconhecimento de fala e tipicamente é um vetor que descreve as características do espectro de freqüência da fala.
Em segundo lugar, o vetor de características deve ser atribuído a uma classe do HMM. Isso é feito com a estimativa de máxima verossimilhança, o HMM é um modelo generativo, escolha a classe que é mais provável que tenha gerado o vetor de características.
Para finanças, a classe pode ser um regime de mercado (tendência / retorno médio) ou no reconhecimento de fala, a classe é uma palavra.
Exemplo de especificação HMM.
O número de estados no HMM.
A probabilidade de transição do estado i para o estado j.
A probabilidade de gerar vetor de características após o estado de entrada j (desde que j não seja o estado de entrada ou saída)
O HMM pode ser escrito como.
os vetores de recursos observados.
a seqüência de estado especificada.
A probabilidade conjunta é a probabilidade de saltar de um estado para o outro multiplicado pelo prob de gerar o vetor de características nesse estado:
Onde é sempre o estado de entrada 1, e é sempre o estado de saída N.
Cálculo da verossimilhança.
No cálculo de probabilidade conjunta acima, assumimos uma seqüência de estados. No entanto, esta é uma variável latente, não a conhecemos, está escondida (daí o nome HIDDEN markov model)! No entanto, se somarmos todas as seqüências de estado possíveis, podemos marginalizá-lo.
Isso pode ser problemático devido ao número de possíveis sequências de estado (especialmente em uma aplicação em tempo real), felizmente existem algoritmos para efetivamente realizar o cálculo sem precisar explorar cada sequência de estados. Um desses algoritmos é o algoritmo forward.
Esta é a distribuição de saída para um dado estado j. A distribuição pode ser qualquer coisa que você quiser, contudo, deve corresponder com a distribuição dos dados no estado j, e deve ser matematicamente tratável. A escolha mais natural nesta fase é assumir que pode ser descrita pelo Gaussiano multivariado. Como uma advertência se os elementos do seu vetor de características estiverem altamente correlacionados, então, a matriz de covariância, tem muitos parâmetros a serem medidos. Veja se você pode colapsar.
para uma matriz diagonal.
Como treinar / Viterbi Parameter Estimation.
Nós já sabemos como se encaixar em uma distribuição normal, o MLE for é a média e a covariância do vetor de características. No entanto, devemos calcular apenas a média e covariância em vetores de características que vieram do estado j, isto é conhecido como Segmentação de Viterbi. Segmentação de Viterbi significa que existe uma tarefa difícil entre o vetor de características e o estado que o gerou, um método alternativo é chamado de Balm-Welch, que atribui probabilisticamente vetores de recursos a vários estados.
State j gerou observações a partir de.
Não se sabe antecipadamente qual estado gerou qual vetor de observação, felizmente, há um algoritmo chamado algoritmo Viterbi para resolver aproximadamente este problema.
O algoritmo avançado para o cálculo eficiente e o algoritmo Viterbi serão explorados na minha próxima postagem.
4 pensamentos sobre & ldquo; Modelos de Markov ocultos e # 8211; Modelo Descrição Parte 1 de 4 & rdquo;
Oi Gekko, há um excelente livro sobre HMM em R: modelos lineares dinâmicos com R. Eu acho que você já sabe, mas espere que isso possa ser útil para seus leitores.

Estratégia de negociação do modelo Markov ocultos
Este é o meu primeiro Quantopian algo, então seja fácil comigo :).
A idéia é o bin movimentos de estoque consecutivos com base nas diferenças de preços e para marcar essas frequências em uma matriz de transição de probabilidade, onde a entrada Pij denota o movimento do estado i para o estado j. A matriz é então dividida pelo número total de transições para obter uma probabilidade de estados móveis. Se o rowsum, para j & gt; i, é uma probabilidade decentemente grande (aka, a probabilidade de que ele se transforme para cima ou o aumento do preço das ações), então compre ações e vice-versa.
Eu acredito que o principal problema com este algoritmo é o método de binning que eu escolhi na linha 34. Em vez de registrar os movimentos de ações com base na média, talvez seja melhor dividi-lo dividindo pelo preço de fechamento ou pelo preço atual das ações. Os rowsums da matriz de transição de probabilidade não aparecem na soma de 1. Eu também não computei nenhum valor de μ porque não sabia como utilizá-los, como usado em alguma identidade como Pij * μ = μ. Implementaria uma matriz maior se o tempo de execução não fosse tão lento como for.
Qualquer comentário ou visão útil será muito apreciada.
Bem-vindo ao Quantopian e obrigado pelo compartilhamento - algoritmo intrigante. No núcleo, parece ser um algoritmo de detecção de padrões. Algumas sugestões:
Implementar as correntes de Markov à mão é negócio complicado por causa da normalização, como você observa.
De qualquer forma, apenas alguns pensamentos. Seria curioso saber se você tinha outras idéias para melhorar a estratégia?
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian. Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
Hmm, eu teria que fazer alguma pesquisa sobre esse modelo de Markov escondido depois que eu saltei minha matemática financeira no meio do meio, parece interessante. Eu não tinha certeza exatamente de como normalizá-lo / o que ele faz, ou como mesmo codificá-lo para esse assunto, então eu meio que decidiu sair com minha própria tangente e tentar uma estratégia que comprou algumas ações se a a probabilidade de aumentar os estados foi razoável com base na matriz.
Ainda estou pensando em como melhorar o algoritmo para além da reparação da parte de compartilhamento de compra / compra. Pode haver um erro em algum lugar, porque -100% retorna parece um pouco lol farfetched. Eu diria que minha intenção principal do algoritmo era mais de pegar o jeito de Quantopian, ao invés de ter uma estratégia bestia, embora os retornos positivos não fariam mal: P.
Desculpe, algo deu errado. Tente novamente ou contate-nos enviando comentários.
Você enviou um ticket de suporte com sucesso.
Nossa equipe de suporte estará em contato em breve.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.
O material deste site é fornecido apenas para fins informativos e não constitui uma oferta de venda, uma solicitação de compra ou uma recomendação ou endosso para qualquer segurança ou estratégia, nem constitui uma oferta de prestação de serviços de consultoria de investimento pela Quantopian.
Além disso, o material não oferece nenhuma opinião em relação à adequação de qualquer segurança ou investimento específico. Nenhuma informação contida neste documento deve ser considerada como uma sugestão para se envolver ou abster-se de qualquer curso de ação relacionado ao investimento, já que nenhuma das empresas atacadas ou nenhuma das suas afiliadas está a comprometer-se a fornecer conselhos de investimento, atuar como conselheiro de qualquer plano ou entidade sujeito a A Lei de Segurança de Renda de Aposentadoria do Empregado de 1974, conforme alterada, conta de aposentadoria individual ou anuidade de aposentadoria individual, ou dar conselhos em capacidade fiduciária em relação aos materiais aqui apresentados. Se você é um aposentadorio individual ou outro investidor, entre em contato com seu consultor financeiro ou outro fiduciário não relacionado a Quantopian sobre se qualquer idéia, estratégia, produto ou serviço de investimento descrito aqui pode ser apropriado para suas circunstâncias. Todos os investimentos envolvem risco, incluindo perda de principal. A Quantopian não oferece garantias sobre a precisão ou integridade das opiniões expressas no site. Os pontos de vista estão sujeitos a alterações e podem ter se tornado pouco confiáveis ​​por vários motivos, incluindo mudanças nas condições do mercado ou nas circunstâncias econômicas.

Gekko Quant - Negociação Quantitativa.
Comércio Quantitativo, Arbitragem Estatística, Aprendizado de Máquinas e Opções Binárias.
Pós-navegação.
Modelos de Markov ocultos e # 8211; Tendência Seguindo & # 8211; Parte 4 de 4.
Atualização: houve um erro de busca no código ao calcular outOfSampleLongReturns e outOfSampleShortReturns, isso foi corrigido e, infelizmente, reduziu a proporção de sharpe de 3.08 para 0.857. É por isso que eu sempre publico o código para fornecer maior transparência do que outros sites.
A parte 3 desta série demonstrou como treinar um HMM em um modelo de brinquedo, este post se concentrará em como realmente atuar na modelagem de dados da vida real. Uma estratégia de tendência seguida será desenvolvida para comercializar o S & amp; P 500.
Na maioria dos problemas de classificação de aprendizagem de máquinas, você precisa de um conjunto de dados de treinamento que tenha etiquetas de classe. Embora tenhamos os dados do mercado, não temos etiquetas de classe, a primeira tarefa é para gerar os rótulos de classe para os dados de treinamento.
Estamos querendo desenvolver uma estratégia de tendências seguidas, precisamos selecionar partes das séries temporais S & amp; P 500 e rotulá-las em uma tendência ascendente ou descendente (também não pode ter nenhum rótulo de tendência). Em teoria, você poderia fazer isso à mão, no entanto, isso não seria viável em todo o universo de estoques. Em vez disso, podemos escrever um programa para classificar automaticamente os dados para nós, como você classifica os dados como em uma tendência depende da sua definição de tendência.
Os rótulos são vistos no gráfico abaixo, e o preço com o verde por baixo significa que ele foi rotulado como um sinal longo, qualquer preço com vermelho acima significa que ele tem o rótulo curto.
No código fornecido, verifico se o preço atual é o preço mais baixo para os próximos 10 períodos (variável NDayLookforwardLowHigh), se for então longo, se a variável for a maior nos próximos 10 períodos, feche o longo. Faça o reverso para calções. É um pouco grosseiro e imagino que existem maneiras significativamente melhores de classificar as tendências, podem ser úteis para colocar uma restrição de volatilidade nas tendências (espero que filtre e melhore a proporção de sharpe).
Além de rotular os dados, um conjunto de recursos do vetor & # 8220; & # 8221; deve ser gerado, os recursos devem conter variáveis ​​que sejam benéficas para detectar tendências. O vetor de características que usei tem os índices de preço aberto a fechado, aberto a alto preço, aberto a baixo preço e todas as combinações intermediárias. Muitas vezes, é desejável modelar a dinâmica dessas variáveis ​​e colocar a mudança de um período nessas variáveis ​​dentro do vetor de características.
A imagem acima mostra a probabilidade de cada regime de mercado dado o HMM treinado no mesmo conjunto de dados. É reconfortante ver que o Long Regime tornou-se muito improvável durante o acidente de 2008.
Uma das excelentes propriedades do HMM é que eles permitem a modelagem de situações que têm duração diferente, mas são da mesma classe. Por exemplo, uma tendência pode durar 10 dias, e outra tendência pode durar 35 dias, podemos passar esses dois exemplos no HMM e tentará modelar a diferença de duração usando as probabilidades de transição de estado interno.
13 pensamentos sobre & ldquo; Modelos de Markov ocultos e # 8211; Tendência Seguindo & # 8211; Parte 4 de 4 & rdquo;
Obrigado por compartilhar o código.
Infelizmente, o RHmm está obsoleto. Talvez seja uma boa idéia ajustar o código para depmixS4: cran. r-project / web / packages / depmixS4.
Em geral, este pacote é ainda mais poderoso.
Há um erro neste código & # 8211; Eu coloquei dados aleatórios e ainda me dei fora da proporção de sharpe da amostra 2,5.
O atraso é o caminho errado.
Obrigado, eu atualizei o artigo. Minha proporção de afim evaporou 🙁
É por isso que eu odeio R, é lento, não orientado a objetos e, acima de tudo, é muito fácil de apresentar um viés favorável!
É por isso que estou ansioso para ver este código convertido em python. 🙂
Sério, eu adoraria ver seu trabalho de aprendizado de máquinas como exemplos em python. E provavelmente muitas outras pessoas também.
Tudo de bom e obrigado por compartilhar,
O que você está faltando em R que está presente em outras línguas que impeçam o avanço da visão?
(É orientado a objetos, pois as palavras-chave são funções genéricas, objetos S3 e S4)
Eu recomendaria quebrar o código um pouco mais e adicionar um pouco mais de explicação por pedaço de código. A rolagem horizontal também torna o código muito difícil de ler. Eu acredito que as diretrizes de estilo recomendam menos de 80 caracteres por linha.
Além disso, ao usar dados xts, o atraso é um número positivo, embora eu acredite, caso contrário, vai para o outro lado.
Gekko & # 8211; RHmm não parece funcionar mais & # 8211; Qualquer sugestão para uma substituição adequada? Novice quant aqui, então, aprecie o seu conselho & # 8230; blog. awesome btw!
Obrigado por compartilhar o código. Acho que finalmente consegui a ideia da HMM.
Como você especificou as condições iniciais?
Obrigado por compartilhar o código, sem ele provavelmente ganhei # 8217; descobrir como usar o HMM.
Obrigado por compartilhar o código. Tenho uma pergunta: por que você se encaixa em dois modelos com três estados? Na minha opinião, treina dois modelos para encontrar três estados latentes dentro de uma tendência longa ou curta, mas não diz se os recursos são de alta ou baixa. O LLH apenas lhe dá uma medida sobre o quão bem os três estados se encaixam nos recursos de teste em um modelo ou outro.

Negociação quantitativa.
Investimentos quantitativos e idéias comerciais, pesquisas e análises.
Sábado, 03 de março de 2018.
Modelo de Markov oculto aplicado à previsão de FX.
35 comentários:
Obrigado por apontar isso . Na verdade, o erro de digitação estava na pré-impressão original, e é por isso que copiei isso!
Para não questionar suas capacidades de quant, mas você está sugerindo seriamente um modelo com a qual muitos parâmetros para se adequar a qualquer possibilidade de negociação? Eu digo isso como comerciante de quant com mais de 14 anos de experiência na indústria e executando minha própria empresa de médio a alto. Para mim, este artigo é absoluto nonesense e as proporções de Sharpe mencionadas são muito baixas mesmo na sua própria "fora da amostra" Reteste para justificar a tomada de tal papel a sério.
Na verdade, os 16 parâmetros não são tantos como eles soam. 14 deles são para ajustar a própria série de tempo: são independentes da estratégia de negociação. Apenas 2 dos parâmetros são usados ​​para otimizar o retorno da estratégia.
Não, não usei nenhum modelo de comutação de regime. Nunca encontrei que esses modelos funcionassem fora da amostra.
Não, eu não vi esse artigo, mas colocarei isso na minha lista de leitura!
Apenas falando de uma perspectiva acadêmica, ao invés do simples HMM, talvez algo parecido com o Modelo Máximo de Entropia Hidden Markov possa funcionar melhor?
Por que você acha que a entropia máxima da HMM funcionará melhor? Parece ser apenas outro método para estimar os parâmetros.
Não tenho evidências empíricas e a previsão financeira não é realmente minha área de especialização. É só isso em minhas poucas tentativas de usar o aprendizado da máquina para previsões financeiras, eu aprendi que a quantidade de ruído tende a pular todas as tendências que o mercado possa ter. Como resultado, a maioria dos alunos tende a ter um desempenho realmente fraco, possivelmente devido ao excesso de ajuste aos dados de treinamento.
Atualmente, estou lendo o seu livro chamado "negociação quantitativa", e já programado e tentou MATHLAB para backtesting. No entanto, os resultados diferem do testador / otimização da Estratégia MetaTrader.
1) Remessa mínima.
Quando você disse que os resultados da Matlab diferem da Metatrader, você pode ser mais específico? Tem certeza de que a lógica nos 2 programas é idêntica?
Eu também pensei que a relação Sharpe ainda poderia ser empregada em qualquer programa. É realmente limitado a Mathlab?
Disse Ernie Chan.
Quando você disse que os resultados da Matlab diferem da Metatrader, você pode ser mais específico? Tem certeza de que a lógica nos 2 programas é idêntica?
Sim, é provável que erros na preparação de dados sejam o que causou as diferenças. No Metatrader, os dados são instalados como parte do programa. Mas a Matlab é uma plataforma de computação geral, bem como uma calculadora. Você precisa ter muito cuidado na preparação de dados para inscrição no Matlab.
Olá, muito obrigado pelos seus comentários. Alguém me ajudou com seu plug-in para a parte do tempo e houve um erro muito pequeno na preparação do tempo em MATHLAB. Ainda assim, os resultados permanecem inconsistentes. Mas, surpreendentemente, a Ratio de Sharpe é quase o mesmo valor para os cinco melhores passes de retirada mínima! mas não em termos de lucros, no entanto.
Estou feliz por ter encontrado um bug. Se a lógica de programação for a mesma em Matlab e MT, os únicos resultados de razão podem ser diferentes é que os dados de entrada estão errados.
quando você vem para os EUA para ensinar a classe Quantitative Trading?
Cabe ao organizador das oficinas, revista Technical Analyst. Se você estiver interessado, solicite uma oficina de Nova York ou Chicago em training@technicalanalyst. co. uk.
Você pode publicar um link para o seu Blog na Comunidade de troca de moeda? Nossos membros irão apreciá-lo.
Os membros incluem: comerciantes de moeda, moeda e especialistas e profissionais de Forex Trading.
É fácil de fazer, basta cortar e colar o link e ele automaticamente liga de volta ao seu site. Você também pode adicionar artigos, notícias e vídeos, se desejar.
Envie-me um e-mail se precisar de ajuda ou gostaria que eu faça isso por você.
Sinta-se à vontade para compartilhar o tempo que desejar.
A comunidade de troca de moeda: vorts / moedas /
Espero que você considere compartilhar conosco.
James Kaufman, Editor.
Eu não estou familiarizado com a função Matlab específica que você usa (eu uso um pacote gratuito em vez disso), mas em geral, sim, se você quiser prever a próxima variável de medição, é o que você faz. Em outras aplicações, os comerciantes estão mais interessados ​​na variável de estado (por exemplo, uma relação de hedge, que não é diretamente observável e, portanto, "oculto"), e a predição da variável de estado seria o foco.
Obrigado Ernie. Essas funções são fornecidas pela caixa de ferramentas Matlab Statistics. Existem cinco funções disponíveis lá.
Quanto ao seu comentário sobre Previsão das Variáveis ​​de Estado, a realidade é que não temos idéia de quais são os estados e quantos deles deveriam ser? então, as pessoas simplesmente assumem alguns estados arbitrários, Sunny, Rainy, Cloudy & quot; ou seja (RiskOn, RiskOff, RiskNeutral).
Para determinar o que uma variável de estado deve ser, muitas vezes você precisa de algum conhecimento de domínio. Ou seja, você precisa de mais do que o HMM para restringir seu modelo. Um bom exemplo é dado no Capítulo 3 do meu novo livro, que ilustra o uso do HMM na busca da relação de hedge de um par de ETFs de cointegração. A variável de estado escolhida neste caso não é arbitrária. Além disso, neste caso, o objetivo não é prever a próxima medição, embora você possa optar por fazê-lo.
Na verdade, eu leio esse artigo antes. Na verdade, alguns colaboradores e eu tentamos replicar e ampliar os resultados para mais ações. O esforço foi um fracasso e reforçou a minha opinião de que técnicas de aprendizado de máquina que aprendem diretamente regras não são adequadas para negociação.
Isto é interessante. Eu implementei minha versão do modelo markov e backtests me deu resultados de uma média de 66% da taxa de ganhos em um período de negociação por hora durante um período acumulado de 5 anos. Em seguida, apliquei um método ppmc para esses resultados e a taxa de ganhos subiu para uma média de 83%. Em termos de negociação real, eu tenho negociado há 7 meses e a proporção média de ganhos é de 69% usando ambos os métodos. Ele melhora com o tempo e adapta-se de forma semelhante às condições de mercado em mudança, então eu estou confiante nele. De qualquer forma apenas dizendo que é possível fazer isso.
Obrigado pelo seu relatório de sucesso com o modelo HMM!
Por PPMC, você quer dizer filtro de partículas Monte Carlo?
Você mencionou no seu livro que você usou & quot; Buy on gap & quot; estratégia em negociação ao vivo.
Como você lida com um caso em que não há trades / citações para um ou mais instrumentos durante a sessão de pré-abertura?
Analisando dados históricos, esse caso às vezes é verdadeiro. Outro problema ocorre quando existem trades / citações, mas são muito antigas, por exemplo, o timestamp é igual a 08:55 am.
Eu ficarei grato pela ajuda.
Você mencionou no seu livro que você usou & quot; Buy on gap & quot; estratégia em negociação ao vivo.
Como você lida com um caso em que não há trades / citações para um ou mais instrumentos durante a sessão de pré-abertura?
Analisando dados históricos, esse caso às vezes é verdadeiro. Outro problema ocorre quando existem trades / citações, mas são muito antigas, por exemplo, o timestamp é igual a 08:55 am.
Eu ficarei grato pela ajuda.
Todo o backtesting intradía deve ser feito com cotações em vez de trades.
Bem, uma vez que o assunto / pesquisa se relaciona diretamente com a oportunidade de ganhar dinheiro, é totalmente inútil esperar qualquer tipo de feedback / contribuição útil: os tolos contribuem, inteligentes ganham dinheiro.
Se alguém tiver uma idéia de trabalho, é muito simples de validar - ganhar dinheiro; A alternativa seria contribuir e ter muitas conversas agradáveis.

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 5 de setembro de 2018.
Um desafio consistente para os comerciantes quantitativos é a freqüente modificação do comportamento dos mercados financeiros, muitas vezes de forma abrupta, devido a mudanças nos períodos de política governamental, ambiente regulatório e outros efeitos macroeconômicos. Tais períodos são conhecidos coloquialmente como "regimes de mercado" e a detecção de tais mudanças é um processo comum, embora difícil, realizado por participantes do mercado quantitativo.
Esses vários regimes levam a ajustes de retorno de ativos através de mudanças em seus meios, variações / volatilidades, correlação em série e covariâncias, que afetam a eficácia de métodos de séries temporais que dependem da estacionaria. Em particular, pode levar a uma correlação variando dinamicamente, excesso de curtose ("caudas de gordura"), heterocedasticidade (agrupamento de correlação em série), bem como retornos distorcidos.
Isso motiva a necessidade de efetivamente detectar e categorizar esses regimes, a fim de selecionar melhor as implementações de estratégias de negociação quantitativas e otimizar os parâmetros dentro deles. A tarefa de modelagem torna-se então uma tentativa de identificar quando ocorreu um novo regime e ajustar a implementação da estratégia, o gerenciamento de riscos e os critérios de dimensionamento da posição de acordo.
Um método principal para realizar a detecção de regime é usar uma técnica de série de tempo estatística conhecida como Modelo de Markov Oculto [2]. Esses modelos são bem adaptados à tarefa, pois envolvem inferência em processos generativos "ocultos" através de observações indiretas "ruidosas" correlacionadas a esses processos. Nesse caso, o processo oculto ou latente é o estado do regime subjacente, enquanto os retornos dos ativos são as observações ruidosas indiretas que são influenciadas por esses estados.
Esta série de artigos discutirá a teoria matemática por trás dos modelos de Markov ocultos (HMM) e como eles podem ser aplicados ao problema da detecção de regime para fins de negociação quantitativa.
A discussão começará por apresentar o conceito de um Modelo Markov [1] e sua categorização associada, que depende do nível de autonomia no sistema, bem como a quantidade de informações sobre o sistema observado. A discussão então se concentrará especificamente na arquitetura do HMM como um processo autônomo, com informações parcialmente observáveis.
Tal como acontece com as discussões anteriores sobre outros modelos de espaço do estado e o Filtro de Kalman, os conceitos inferenciais de filtragem, suavização e previsão serão delineados. Algoritmos específicos, como Algoritmo Avançado [6] e Algoritmo de Viterbi [7] que realizam essas tarefas, não serão apresentados, pois o foco da discussão está firmemente em aplicações de HMM para financiamento quantitativo, em vez de derivação de algoritmos.
Nos artigos subseqüentes, o HMM será aplicado a diversos ativos para detectar regimes. Essas sobreposições de detecção serão então adicionadas a um conjunto de estratégias de negociação quantitativas através de um "gerente de risco". Isso será usado para avaliar como o desempenho comercial algorítmico varia com e sem detecção de regime.
Modelos de Markov.
Antes da discussão sobre modelos de Markov ocultos, é necessário considerar o conceito mais amplo de um modelo de Markov. Um modelo de Markov é um modelo de espaço estocástico envolvendo transições aleatórias entre estados em que a probabilidade de salto é apenas dependente do estado atual, em vez de qualquer um dos estados anteriores. O modelo é dito possuir a propriedade Markov e é "sem memória". Os modelos Random Walk são outro exemplo familiar de um modelo de Markov.
Os Modelos de Markov podem ser categorizados em quatro grandes tipos de modelos dependendo da autonomia do sistema e se toda ou parte das informações sobre o sistema podem ser observadas em cada estado. A página do modelo de Markov na Wikipedia [1] fornece uma matriz útil que descreve essas diferenças, que serão repetidas aqui:
O modelo mais simples, a Cadeia de Markov, é autônomo e totalmente observável. Não pode ser modificado por ações de um "agente" como nos processos controlados e todas as informações estão disponíveis no modelo em qualquer estado. Um bom exemplo de uma Cadeia de Markov é o algoritmo de Markov Chain Monte Carlo (MCMC) usado em grande parte na inferência computacional bayesiana.
Se o modelo ainda é totalmente autônomo, mas apenas parcialmente observável, é conhecido como um modelo de Markov oculto. Em tal modelo, existem estados latentes subjacentes (e transições de probabilidade entre eles), mas não são diretamente observáveis ​​e, em vez disso, influenciam as "observações". Um ponto importante é que, enquanto os estados latentes possuem a propriedade Markov, não há necessidade de os estados de observação fazê-lo. O uso mais comum do HMM fora do financiamento quantitativo é o campo do reconhecimento de fala.
Uma vez que o sistema é permitido ser "controlado" por um (s) agente (s), esses processos estão sob o título de Aprendizado de Reforço (RL), muitas vezes considerado o terceiro "pilar" da aprendizagem de máquinas, juntamente com Aprendizagem Supervisionada e Aprendizagem Não Supervisada. Se o sistema for totalmente observável, mas controlado, então o modelo é chamado de Processo de Decisão Markov (MDP). Uma técnica relacionada é conhecida como Q-Learning [11], que é usada para otimizar a política de seleção de ação para um agente sob um modelo de Processo de Decisão Markov. Em 2018, o Google DeepMind foi pioneiro no uso de Deep Reinforcement Networks, ou Deep Q Networks, para criar um ótimo agente para jogar videogames Atari 2600 exclusivamente a partir do buffer de tela [12].
Se o sistema for controlado e apenas parcialmente observável, então esses modelos de aprendizagem de reforço são denominados Processos de decisão Markov parcialmente observáveis ​​(POMDP). As técnicas para resolver POMDP de alta dimensão são objeto de pesquisas acadêmicas muito atuais. A equipe sem fins lucrativos da OpenAI passou um tempo significativo a analisar esses problemas e lançou um kit de ferramentas de código aberto, ou "academia", para permitir testes diretos de novos agentes RL conhecidos como OpenAI Gym [13].
Infelizmente, o reforço da aprendizagem, juntamente com o MDP e o POMDP, não estão dentro do escopo deste artigo. No entanto, serão objecto de artigos posteriores, particularmente à medida que a série de artigos sobre Deep Learning for desenvolvida.
Observe que neste artigo, os processos de Markov em tempo contínuo não são considerados. Na negociação quantitativa, a unidade de tempo é freqüentemente administrada através de tiques ou barras de dados de ativos históricos. However, if the objective is to price derivatives contracts then the continuous-time machinery of stochastic calculus would be utilised.
Markov Model Mathematical Specification.
This section as well as that on the Hidden Markov Model Mathematical Specification will closely follow the notation and model specification of Murphy (2018) [8] .
In quantitative finance the analysis of a time series is often of primary interest. Such a time series generally consists of a sequence of $T$ discrete observations $X_1, \ldots, X_T$. An important assumption about Markov Chain models is that at any time $t$, the observation $X_t$ captures all of the necessary information required to make predictions about future states. This assumption will be utilised in the following specification.
Formulating the Markov Chain into a probabilistic framework allows the joint density function for the probability of seeing the observations to be written as:
\begin p(X_ ) &=& p(X_1)p(X_2 \mid X_1)p(X_3 \mid X_2)\ldots \\ &=& p(X_1) \prod^ _ p(X_t \mid X_ ) \end.
This states that the probability of seeing sequences of observations is given by the probability of the initial observation multiplied $T-1$ times by the conditional probability of seeing the subsequent observation, given the previous observation has occurred. It will be assumed in this article that the latter term, known as the transition function , $p(X_t \mid X_ )$ will itself be time-independent.
In addition, since the market regime models considered in this article series will consist of a small, discrete number of regimes (or "states"), say $K$, the type of model under consideration is known as a Discrete-State Markov Chain (DSMC).
Thus if there are $K$ separate possible states, or regimes, for the model to be in at any time $t$ then the transition function can be written as a transition matrix that describes the probability of transitioning from state $j$ to state $i$ at any time-step $t$. Mathematically, the elements of the transition matrix $A$ are given by:
\begin A_ = p(X_t = j \mid X_ = i) \end.
As an example it is possible to consider a simple two-state Markov Chain Model. The following diagram represents the numbered states as circles while the arcs represent the probability of jumping from state to state:
Two-state Markov Chain Model.
Notice that the probabilities sum to unity for each state, i. e. $\alpha + (1 - \alpha) = 1$. The transition matrix $A$ for this system is a $2 \times 2$ matrix given by:
\begin A = \left( \begin 1-\alpha & \alpha \\ \beta & 1-\beta \end \right) \end.
In order to simulate $n$ steps of a general DSMC model it is possible to define the $n$-step transition matrix $A(n)$ as:
It can be easily shown that $A(m+n)=A(m)A(n)$ and thus that $A(n)=A(1)^n$. This means that $n$ steps of a DSMC model can be simulated simply by repeated multiplication of the transition matrix with itself.
Hidden Markov Models.
Hidden Markov Models are Markov Models where the states are now "hidden" from view, rather than being directly observable. Instead there are a set of output observations , related to the states, which are directly visible. To make this concrete for a quantitative finance example it is possible to think of the states as hidden "regimes" under which a market might be acting while the observations are the asset returns that are directly visible.
In a Markov Model it is only necessary to create a joint density function for the observations. A time-invariant transition matrix was specified allowing full simulation of the model. For Hidden Markov Models it is necessary to create a set of discrete states $z_t \in \ $ (although for purposes of regime detection it is often only necessary to have $K \leq 3$) and to model the observations with an additional probability model, $p( _t \mid z_t)$. That is, the conditional probability of seeing a particular observation (asset return) given that the state (market regime) is currently equal to $z_t$.
Depending upon the specified state and observation transition probabilities a Hidden Markov Model will tend to stay in a particular state and then suddenly jump to a new state and remain in that state for some time. This is precisely the behaviour that is desired from such a model when trying to apply it to market regimes. The regimes themselves are not expected to change too quickly (consider regulatory changes and other slow-moving macroeconomic effects). However, when they do change they are expected to persist for some time.
Hidden Markov Model Mathematical Specification.
The corresponding joint density function for the HMM is given by (again using notation from Murphy (2018) [8] ):
In the first line this states that the joint probability of seeing the full set of hidden states and observations is equal to the probability of simply seeing the hidden states multiplied by the probability of seeing the observations, conditional on the states. This makes sense as the observations cannot affect the states, but the hidden states do indirectly affect the observations.
The second line splits these two distributions into transition functions. The transition function for the states is given by $p(z_t \mid z_ )$ while that for the observations (which depend upon the states) is given by $p( _t \mid z_t)$.
As with the Markov Model description above it will be assumed for the purposes of this article that both the state and observation transition functions are time-invariant. This means that it is possible to utilise the $K \times K$ state transition matrix $A$ as before with the Markov Model for that component of the model.
However, for the application considered here, namely observations of asset returns, the values are in fact continuous. This means the model choice for the observation transition function is more complex. The common choice is to make use of a conditional multivariate Gaussian distribution with mean $ _k$ and covariance $ _k$. This is formalised below:
That is, if the state $z_t$ is currently equal to $k$, then the probability of seeing observation $ _t$, given the parameters of the model $\theta$, is distributed as a multivariate Guassian.
In order to make this a little clearer the following diagram shows the evolution of the states $z_t$ and how they lead indirectly to the evolution of the observations, $ _t$:
Filtering of Hidden Markov Models.
With the joint density function specified it remains to consider the how the model will be utilised. In general state-space modelling there are often three main tasks of interest: Filtering, Smoothing and Prediction. The previous article on state-space models and the Kalman Filter describe these briefly. They will be repeated here for completeness:
Prediction - Forecasting subsequent values of the state Filtering - Estimating the current values of the state from past and current observations Smoothing - Estimating the past values of the state given the observations.
Filtering and smoothing are similar, but not identical. Smoothing is concerned with wanting to understand what has happened to states in the past given current knowledge, whereas filtering is concerned with what is happening with the state right now .
It is beyond the scope of this article to describe in detail the algorithms developed for filtering, smoothing and prediction. The main goal of this article series is to apply Hidden Markov Models to Regime Detection. Hence the task at hand becomes determining what the current "market regime state" the world is in utilising the asset returns available to date. Thus this is a filtering problem.
Mathematically the conditional probability of the state at time $t$ given the sequence of observations up to time $t$ is the object of interest. This involves determining $p(z_t \mid _ )$. As with the Kalman Filter it is possible to recursively apply Bayes rule in order to achieve filtering on an HMM.
Próximos passos.
In the second article of the series regime detection for financial assets will be discussed in greater depth. In addition libraries from the Python language will be applied to historical asset returns in order to produce a regime detection tool that will ultimately be used as a risk management tool for quantitative trading.
Bibliographic Note.
An overview of Markov Models (as well as their various categorisations), including Hidden Markov Models (and algorithms to solve them), can be found in the introductory articles on Wikipedia [1], [2], [3], [4], [5], [6], [7] .
A highly detailed textbook mathematical overview of Hidden Markov Models, with applications to speech recognition problems and the Google PageRank algorithm, can be found in Murphy (2018) [8] . Bishop (2007) [8] covers similar ground to Murphy (2018), including the derivation of the Maximum Likelihood Estimate (MLE) for the HMM as well as the Forward-Backward and Viterbi Algorithms. The discussion concludes with Linear Dynamical Systems and Particle Filters.
Referências.
Just Getting Started with Quantitative Trading?
3 Reasons to Subscribe to the QuantStart Email List:
1. Quant Trading Lessons.
You'll get instant access to a free 10-part email course packed with hints and tips to help you get started in quantitative trading!
2. All The Latest Content.
Every week I'll send you a wrap of all activity on QuantStart so you'll never miss a post again.
Real, actionable quant trading tips with no nonsense.

No comments:

Post a Comment