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 2016.
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, ainda que 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 2015, 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. No entanto, se o objetivo é negociar contratos de derivativos, a maquinaria do cálculo estocástico em tempo contínuo seria utilizada.
Especificação matemática do modelo de Markov.
Esta seção, bem como sobre a Especificação Matemática do Modelo Markov Oculto, acompanhará de perto a notação e a especificação do modelo de Murphy (2012) [8].
Em finanças quantitativas, a análise de uma série temporal é muitas vezes de interesse primário. Essa série de tempo geralmente consiste em uma seqüência de observações discretas $ T $ $ X_1, \ ldots, X_T $. Uma suposição importante sobre os modelos da Markov Chain é que a qualquer momento $ t $, a observação $ X_t $ captura todas as informações necessárias necessárias para fazer previsões sobre estados futuros. Este pressuposto será utilizado na seguinte especificação.
Formular a Cadeia de Markov em uma estrutura probabilística permite a função de densidade articular para a probabilidade de ver as observações serem escritas como:
\ 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_) \ fim.
Isso indica que a probabilidade de ver seqüências de observações é dada pela probabilidade de a observação inicial multiplicar $ T-1 $ vezes pela probabilidade condicional de ver a observação subsequente, uma vez que a observação anterior ocorreu. Será assumido neste artigo que o último termo, conhecido como a função de transição, $ p (X_t \ mid X_) $ será independente do tempo.
Além disso, uma vez que os modelos de regime de mercado considerados nesta série de artigos consistem em um número pequeno e discreto de regimes (ou "estados"), digamos $ K $, o tipo de modelo em consideração é conhecido como uma Cadeia de Markov de Estado Discreto (DSMC).
Assim, se existirem estados possíveis de $ K $, ou regimes, para que o modelo esteja em qualquer momento $ t $, a função de transição pode ser escrita como uma matriz de transição que descreve a probabilidade de transição do estado $ j $ para o estado $ i $ a qualquer hora-passo $ t $. Matematicamente, os elementos da matriz de transição $ A $ são dados por:
\ begin A_ = p (X_t = j \ mid X_ = i) \ end.
Como exemplo, é possível considerar um modelo de cadeia de Markov simples de dois estados. O diagrama a seguir representa os estados numerados como círculos enquanto os arcos representam a probabilidade de saltar de estado para estado:
Modelo de Cadeia de Markov de dois estados.
Observe que as probabilidades somam a unidade para cada estado, isto é, $ \ alpha + (1 - \ alpha) = 1 $. A matriz de transição $ A $ para este sistema é uma matriz $ 2 \ times 2 $ fornecida por:
\ begin A = \ left (\ begin 1- \ alpha & \ alpha \\ \ beta & 1 \ beta \ end \ right) \ end.
Para simular $ n $ etapas de um modelo de DSMC geral, é possível definir a matriz de transição $ n $ - step $ A (n) $ como:
Pode ser facilmente mostrado que $ A (m + n) = A (m) A (n) $ e, portanto, $ A (n) = A (1) ^ n $. Isso significa que $ n $ etapas de um modelo DSMC podem ser simuladas simplesmente por multiplicação repetida da matriz de transição com ela mesma.
Modelos de Markov ocultos.
Modelos de Markov ocultos são Modelos de Markov onde os estados agora estão "ocultos" na vista, em vez de serem diretamente observáveis. Em vez disso, há um conjunto de observações de saída, relacionadas aos estados, que são diretamente visíveis. Para tornar isso concreto para um exemplo de financiamento quantitativo, é possível pensar nos estados como "regimes" ocultos sob os quais um mercado pode atuar enquanto as observações são os retornos de ativos que são diretamente visíveis.
Em um modelo de Markov, apenas é necessário criar uma função de densidade de junção para as observações. Foi especificada uma matriz de transição invariante no tempo que permite a simulação completa do modelo. Para os modelos de Markov ocultos, é necessário criar um conjunto de estados discretos $ z_t \ in \ $ (embora, para fins de detecção de regime, geralmente seja necessário ter $ K \ leq 3 $) e modelar as observações com uma probabilidade adicional modelo, $ p (_t \ mid z_t) $. Ou seja, a probabilidade condicional de ver uma observação particular (retorno de ativos) dado que o estado (regime de mercado) é atualmente igual a $ z_t $.
Dependendo das probabilidades de transição de estado e observação especificadas, um Modelo de Markov Oculto tenderá a permanecer em um estado particular e, de repente, pulará para um novo estado e permanecerá nesse estado por algum tempo. Este é precisamente o comportamento que se deseja desse modelo ao tentar aplicá-lo aos regimes de mercado. Os próprios regimes não devem mudar muito rapidamente (considerar mudanças regulatórias e outros efeitos macroeconômicos de movimento lento). No entanto, quando eles mudam, espera-se que persistam por algum tempo.
Especificação matemática do modelo Markov oculto.
A função de densidade de junção correspondente para o HMM é dada por (novamente usando notação de Murphy (2012) [8]):
Na primeira linha, afirma que a probabilidade conjunta de ver o conjunto completo de estados escondidos e observações é igual à probabilidade de simplesmente ver os estados ocultos multiplicados pela probabilidade de ver as observações, condicionais nos estados. Isso faz sentido porque as observações não podem afetar os estados, mas os estados escondidos afetam indiretamente as observações.
A segunda linha divide essas duas distribuições em funções de transição. A função de transição para os estados é dada por $ p (z_t \ mid z_) $ enquanto que para as observações (que dependem dos estados) é dada por $ p (_t \ mid z_t) $.
Tal como acontece com a descrição do modelo de Markov acima, será assumido para os propósitos deste artigo que tanto o estado quanto as funções de transição de observação são invariantes no tempo. Isso significa que é possível utilizar a matriz de transição de $ $ K \ times K $ $ A $ como antes com o Modelo Markov para esse componente do modelo.
No entanto, para a aplicação considerada aqui, nomeadamente observações de retornos de ativos, os valores são, de fato, contínuos. Isso significa que a escolha do modelo para a função de transição de observação é mais complexa. A escolha comum é fazer uso de uma distribuição condicional de Gaussiana multivariada com $ $ $ $ e covariância $ _k $. Isso é formalizado abaixo:
Ou seja, se o estado $ z_t $ é atualmente igual a $ k $, então a probabilidade de ver a observação $ _t $, dado os parâmetros do modelo $ \ theta $, é distribuída como um Guassian multivariante.
Para tornar isso um pouco mais claro, o diagrama a seguir mostra a evolução dos estados $ z_t $ e como eles lideram indiretamente a evolução das observações, $ _t $:
Filtragem de modelos de Markov ocultos.
Com a função de densidade articular especificada, continua a considerar como o modelo será utilizado. Em geral, o modelo de espaço-estado geralmente tem três principais tarefas de interesse: Filtragem, Suavização e Previsão. O artigo anterior sobre modelos de espaço de estado e o Filtro de Kalman descrevem estes brevemente. Eles serão repetidos aqui para serem completos:
Previsão - Previsão de valores subsequentes do estado Filtragem - Estimativa dos valores atuais do estado de observações passadas e atuais Suavização - Estimativa dos valores passados do estado dado as observações.
Filtragem e alisamento são semelhantes, mas não idênticos. A suavização está preocupada em querer entender o que aconteceu com os estados no passado, dado o conhecimento atual, enquanto a filtragem está preocupada com o que está acontecendo com o estado agora.
Está além do alcance deste artigo descrever detalhadamente os algoritmos desenvolvidos para filtragem, alisamento e previsão. O objetivo principal desta série de artigos é aplicar Modelos de Markov ocultos à Detecção de Regime. Daí a tarefa em questão torna-se determinar o que o atual "regime de mercado está" no mundo está utilizando os retornos de ativos disponíveis até à data. Assim, este é um problema de filtragem.
Matematicamente, a probabilidade condicional do estado no tempo $ t $ dada a seqüência de observações ao longo do tempo $ t $ é objeto de interesse. Isso envolve a determinação de $ p (z_t \ mid _) $. Tal como acontece com o Filtro Kalman, é possível aplicar de forma recursiva a regra de Bayes para conseguir a filtragem em um HMM.
Próximos passos.
No segundo artigo da série, o regime de detecção de ativos financeiros será discutido em maior profundidade. Além disso, as bibliotecas da linguagem Python serão aplicadas aos retornos de ativos históricos, a fim de produzir uma ferramenta de detecção de regime que, em última análise, será usada como uma ferramenta de gerenciamento de risco para negociação quantitativa.
Nota bibliográfica.
Uma visão geral dos modelos de Markov (bem como suas várias categorizações), incluindo modelos de Markov ocultos (e algoritmos para resolvê-los), podem ser encontrados nos artigos introdutórios na Wikipédia [1], [2], [3], [4] , [5], [6], [7].
Uma visão matemática altamente detalhada dos modelos de Markov ocultos, com aplicativos para problemas de reconhecimento de fala e o algoritmo Google PageRank, pode ser encontrada em Murphy (2012) [8]. Bishop (2007) [8] cobre um terreno semelhante a Murphy (2012), incluindo a derivação da estimativa de máxima probabilidade (MLE) para o HMM, bem como os algoritmos Forward-Backward e Viterbi. A discussão conclui com sistemas dinâmicos lineares e filtros de partículas.
Referências.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever na QuantStart List:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso gratuito de 10 partes, com sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.
Estratégia de negociação do modelo Markov ocultos
Obter através da App Store Leia esta publicação em nosso aplicativo!
Estratégia de negociação ideal no mundo dos brinquedos do modelo de Markov ocultos simples com gaussianos.
Quero resolver o seguinte problema de otimização: qual é a ótima estratégia de negociação geral (no sentido da maior razão de Sharpe) em uma série de tempo que é o resultado de um modelo de Markov oculto com dois estados e dois Gaussianos com uma matriz de transição conhecida e conhecidos parâmetros de média e variância?
A estratégia de negociação deve idealmente ser baseada apenas em indicadores técnicos facilmente observáveis, como o impulso intrínseco ou SMAs e a volatilidade. O meu sentimento de intuição é que o período de lookback ótimo para o cálculo destes deve depender da matriz de transição.
Sou grato (como de costume) por idéias, literatura, código (idealmente R :-) e similares.
Não entendo como os indicadores técnicos são relevantes para a questão. As probabilidades de estado podem ser geradas diretamente dos retornos se o modelo for conhecido. Não há necessidade de adivinhar as regras de negociação heurísticas com base em indicadores técnicos.
Deixe $ r_t $ ser o retorno no tempo $ t $. Seu modelo é.
Em outras palavras, o estado é Markov e os retornos são normais com média conhecida, variância em qualquer estado. Suponhamos que estamos no tempo $ t $. Precisamos primeiro determinar $ P \,. r_0 \> = p_t $. Use o algoritmo para trás para trás, também conhecido como programação dinâmica e implementado na maioria dos pacotes HMM.
Agora $$ E \ = p_t \ mu_0 + (1-p_t) \ mu_1 $$ e $$ Var \ = p_t \ sigma_0 ^ 2 + (1-p_t) \ sigma_1 ^ 2. $$
Agora precisamos escolher nossa posição $ x $ para maximizar o Sharpe.
Isso é equivalente (até um fator de escala) ao problema da variância média.
$$ \ min_x \ \>, $$ onde $ \ Sigma $ é uma matriz diagonal com $ Var \, t = 0,1. T $ na diagonal e $ \ bar = E \ $. A prova disso é por contradição. Suponha que haja $ x $ com Sharpe superior que não seja a solução para o problema da variância média, $ x ^ * $. Podemos escalar $ x $ por uma constante positiva $ \ alpha $ para que possamos ter $ \ alpha \ bar 'x = \ bar' x ^ * $. Ao mesmo tempo, sabemos que $$ \ alpha \ sqrt & lt; \ sqrt $$ porque $ x ^ * $ não é Sharpe-optimal. Esquadrão de ambos os lados dá.
O fato de que $ \ alpha x $ tenha a mesma variável média e estritamente inferior contradiz a suposição de que $ x ^ * $ é a solução. Concluímos assim que a solução de variância média é sempre o melhor de Sharpe. Observe que, em problemas mais gerais (por exemplo, com restrições), essa equivalência não é necessariamente válida. Agora, a solução para o problema de variância média (tomar derivado e ajustado para zero) é apenas $ \ frac \ Sigma ^ \ bar $. No entanto, no tempo $ t $ não precisamos nos preocupar com nada além de $ x_t $. É possível calcular $ x $ para tempos futuros otimizados em relação às expectativas atuais, mas na prática, é melhor re-executar o algoritmo forward-backward depois de observar o próximo retorno e, em seguida, reciclar $ x_ $. A solução ideal, portanto, é apostar proporcionalmente em $ \ frac>> $. Isso tem uma interpretação intuitiva como $$ \ frac>> = \ frac> >> \ frac >> $$ para que $$ x_t \ sqrt> = \ frac> >>, ou seja, assumir risco proporcional ao esperado Sharpe em cada Tempo.
Se você tiver custos de transação, então você precisa considerar os futuros meios e variâncias, o que dificulta o problema, mas é possível.
Estratégia de negociação do modelo Markov ocultos
Saber como diferentes condições de mercado afetam o desempenho de sua estratégia podem ter um enorme impacto em seus retornos.
Certas estratégias irão funcionar bem em mercados altamente voláteis e agitados, enquanto outros precisam de uma tendência forte e suave, ou eles arriscam longos períodos de redução. Descobrir quando você deve começar ou parar de negociar uma estratégia, ajustando suas técnicas de gerenciamento de risco e dinheiro, e até mesmo definir os parâmetros de suas condições de entrada e saída dependem do mercado, ou condições atuais.
Ser capaz de identificar diferentes regimes de mercado e alterar sua estratégia em conformidade pode significar a diferença entre sucesso e falha nos mercados. Neste artigo, exploraremos como identificar diferentes regimes de mercado usando uma poderosa classe de algoritmos de aprendizado de máquina conhecidos como "Modelos de Markov ocultos".
Modelos de Markov ocultos.
Os modelos de Markov são um processo probabilístico que analisa o estado atual para prever o próximo estado. Um exemplo simples envolve olhar para o clima. Digamos que temos três condições climáticas (também conhecidas como "estatutos" ou "regulamentos"): chuvoso, nublado e ensolarado. Se hoje estiver chovendo, um modelo de Markov procura a probabilidade de cada condição climática diferente ocorrer. Por exemplo, pode haver uma maior probabilidade de que ele continue a chover amanhã, uma probabilidade ligeiramente menor de que ele estará nublado, e uma pequena probabilidade de que ele se torne ensolarado.
Isso parece um processo muito direto, mas a complexidade consiste em não saber a probabilidade de cada mudança de regime e como explicar essas probabilidades mudando ao longo do tempo. Este é o lugar onde um Modelo de Markov Oculto (HMM) entra em jogo. Eles são capazes de estimar as probabilidades de transição para cada regime e depois, com base nas condições atuais, produzem o regime mais provável.
As aplicações à negociação são muito claras. Em vez das condições climáticas, poderíamos definir os regimes como mercados de alta, baixa ou paralelamente, ou alta ou baixa volatilidade, ou alguma combinação de fatores que sabemos terão um grande efeito no desempenho de nossa estratégia.
Construindo um modelo em R sobre dados reais.
Buscamos encontrar diferentes regimes de mercado baseados nesses fatores que podemos usar para otimizar nossa estratégia comercial. Para fazer isso, iremos usar a biblioteca depmixS4 R, bem como cartas de dia EUR / USD que datam de 2012, crie o modelo.
Primeiro, vamos instalar as bibliotecas e construir nosso conjunto de dados em R.
Carregar o conjunto de dados (você pode baixá-lo aqui) e, em seguida, transformá-lo em um objeto de séries temporais.
Agora é hora de construir o Modelo de Markov Oculto!
A matriz de transição dá a nós a probabilidade de passar de um estado para o outro.
Vamos ver o que encontramos:
A probabilidade de cada regime separadamente:
O que podemos ver é que o regime 3 tende a ser tempos de alta volatilidade e movimentos de grande magnitude, o regime 2 caracteriza-se por uma volatilidade média e o regime 1 consiste em baixa volatilidade.
Aplicativos para sua estratégia.
Existem várias formas diferentes de aplicar o HMM à sua negociação. O mais simples seria ver se há uma relação entre o regime e o desempenho de sua estratégia, permitindo que você se ajuste de acordo. Você também pode ajustar os parâmetros da sua estratégia com base no regime. Por exemplo, maiores lucros e perdas em tempos de alta volatilidade. Existe também a opção de criar estratégias únicas para diferentes regimes.
Modelos de Markov ocultos são ferramentas poderosas que podem dar-lhe informações sobre as mudanças nas condições do mercado. Eles têm uma ampla gama de aplicações que podem permitir que você melhore o desempenho da sua estratégia.
Dê uma olhada no TRAIDE para outras formas de aplicar o aprendizado de máquina para sua negociação!
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. org/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.
Saber como diferentes condições de mercado afetam o desempenho de sua estratégia podem ter um enorme impacto em seus retornos.
Certas estratégias irão funcionar bem em mercados altamente voláteis e agitados, enquanto outros precisam de uma tendência forte e suave, ou eles arriscam longos períodos de redução. Descobrir quando você deve começar ou parar de negociar uma estratégia, ajustando suas técnicas de gerenciamento de risco e dinheiro, e até mesmo definir os parâmetros de suas condições de entrada e saída dependem do mercado, ou condições atuais.
Ser capaz de identificar diferentes regimes de mercado e alterar sua estratégia em conformidade pode significar a diferença entre sucesso e falha nos mercados. Neste artigo, exploraremos como identificar diferentes regimes de mercado usando uma poderosa classe de algoritmos de aprendizado de máquina conhecidos como "Modelos de Markov ocultos".
Modelos de Markov ocultos.
Os modelos de Markov são um processo probabilístico que analisa o estado atual para prever o próximo estado. Um exemplo simples envolve olhar para o clima. Digamos que temos três condições climáticas (também conhecidas como "estatutos" ou "regulamentos"): chuvoso, nublado e ensolarado. Se hoje estiver chovendo, um modelo de Markov procura a probabilidade de cada condição climática diferente ocorrer. Por exemplo, pode haver uma maior probabilidade de que ele continue a chover amanhã, uma probabilidade ligeiramente menor de que ele estará nublado, e uma pequena probabilidade de que ele se torne ensolarado.
Isso parece um processo muito direto, mas a complexidade consiste em não saber a probabilidade de cada mudança de regime e como explicar essas probabilidades mudando ao longo do tempo. Este é o lugar onde um Modelo de Markov Oculto (HMM) entra em jogo. Eles são capazes de estimar as probabilidades de transição para cada regime e depois, com base nas condições atuais, produzem o regime mais provável.
As aplicações à negociação são muito claras. Em vez das condições climáticas, poderíamos definir os regimes como mercados de alta, baixa ou paralelamente, ou alta ou baixa volatilidade, ou alguma combinação de fatores que sabemos terão um grande efeito no desempenho de nossa estratégia.
Construindo um modelo em R sobre dados reais.
Buscamos encontrar diferentes regimes de mercado baseados nesses fatores que podemos usar para otimizar nossa estratégia comercial. Para fazer isso, iremos usar a biblioteca depmixS4 R, bem como cartas de dia EUR / USD que datam de 2012, crie o modelo.
Primeiro, vamos instalar as bibliotecas e construir nosso conjunto de dados em R.
Carregar o conjunto de dados (você pode baixá-lo aqui) e, em seguida, transformá-lo em um objeto de séries temporais.
Agora é hora de construir o Modelo de Markov Oculto!
A matriz de transição dá a nós a probabilidade de passar de um estado para o outro.
Vamos ver o que encontramos:
A probabilidade de cada regime separadamente:
O que podemos ver é que o regime 3 tende a ser tempos de alta volatilidade e movimentos de grande magnitude, o regime 2 caracteriza-se por uma volatilidade média e o regime 1 consiste em baixa volatilidade.
Aplicativos para sua estratégia.
Existem várias formas diferentes de aplicar o HMM à sua negociação. O mais simples seria ver se há uma relação entre o regime e o desempenho de sua estratégia, permitindo que você se ajuste de acordo. Você também pode ajustar os parâmetros da sua estratégia com base no regime. Por exemplo, maiores lucros e perdas em tempos de alta volatilidade. Existe também a opção de criar estratégias únicas para diferentes regimes.
Modelos de Markov ocultos são ferramentas poderosas que podem dar-lhe informações sobre as mudanças nas condições do mercado. Eles têm uma ampla gama de aplicações que podem permitir que você melhore o desempenho da sua estratégia.
Dê uma olhada no TRAIDE para outras formas de aplicar o aprendizado de máquina para sua negociação!
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. org/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.
Комментариев нет:
Отправить комментарий