Tuesday 14 November 2017

Garch Trading System


GARCH Melhorado Nelder Mead MT4 Introdução ao GARCH Melhorado Nelder Mead Algoritmo GARCH é a inicial curta para Generalized Autoregressive condicional Heteroskedasticity e é o modelo de previsão de volatilidade comumente usado no setor financeiro. O modelo GARCH foi publicado pela primeira vez no trabalho do economista dinamarquês Tim Peter Bollerslev em 1986. O vencedor do Prêmio Nobel de 2003, Robert F Engle, também contribuiu muito para o refinamento do modelo GARCH com o trabalho de Tims. Nosso preditor GARCH INM tomou o método original de Nelder Mead para a construção do modelo GARCH. No entanto, o método original de Nelder Meads ocasionalmente perde a convergência e, portanto, melhoramos o método original de Nelder Mead, incorporando a etapa intermediária ARMA (Autoregressive Moving Average) antes do passo GARCH. Como usar o preditor GARCH INM para negociação O objetivo do GARCH INM predictor é melhorar o desempenho comercial. Aqui estão algumas dicas. Nosso preditor GARCH INM usa o ponto como unidade básica. Portanto, a volatilidade prevista pode fornecer uma idéia escalável do comerciante sobre a volatilidade futura. Por exemplo, se GARCH previu 1120 pontos (112 pips) para vela atual com 95 intervalo de confiança, então você pode esperar que há 95 de chance para o mercado atual para ficar dentro do intervalo de 112 pips. Detectar o mercado de anomalias é também outra função importante com o GARCH. Se a faixa de preço para o mercado atual se moveu para fora da volatilidade prevista (intervalo de confiança de 95), então este é o evento de anomalia com 5 Probabilidade de ocorrer. A volatilidade tem uma ligação muito estreita com a tendência. Aumento da volatilidade muitas vezes dizer-lhe início da tendência. Filtrando o mercado de gama usando nosso preditor GARCH INM, você pode apontar para entrar no mercado de tendências. Descrição matemática do GARCH GARCH INM preditor usa modelo padrão GARCH (1, 1). Sua descrição matemática é simplesmente relacionar a variância de séries temporais com a variância anterior e o retorno ao quadrado anterior. Em notação matemática, isto seria: Variância em t omega alfa ao quadrado de retorno em t-1 beta Variância em t-1 Quando séries temporais retornam y at t erro médio e t tempo Descrição para os parâmetros de entrada NumberOfObs: Número de observações (data point) Para ser usado para o cálculo. Recomendamos um mínimo de 1000 pontos de dados. UseHighLow: Com o uso do modo High-Low (true), o intervalo é calculado usando high low. Se UseHighLow falso, fechar fechamento anterior será usado para calcular intervalo. Recomendamos usar o padrão para sua negociação. Intervalo de Confiança: Intervalo de Confiança para Predição de GARCH. Nós fornecemos 90, 95 e 99 intervalo de confiança. Esse intervalo de confiança fornece senso probabilístico para o mercado futuro. SafetyFactor: Fator de segurança é adicionado para segurança extra de operação comercial. O Fator de Segurança deve ser maior que 1. Se Fator de Segurança 1, então a volatilidade prevista é igual à volatilidade GARCH original. Se o fator de segurança 1.5, então a volatilidade prevista terá 50 margem segura sobre a volatilidade GARCH original. Nota sobre GARCH Nelder Mead Este indictor GARCH é uma tentativa de trazer método científico avançado no mundo real aplicação comercial. A estimativa de parâmetros do algoritmo GARCH é particularmente difícil e enganosa, mesmo entre os estatísticos experientes. Aqui nós damos o algoritmo GARCH de auto-otimização para comerciantes intelectuais entusiastas cientistas. Este é software livre e, portanto, podemos oferecer-lhe um serviço limitado ao cliente em nosso GARCH Nelder Mead. Em vez disso, desfrute deste sistema de negociação livre, mas poderoso. Se o parâmetro GARCH estiver dentro da precisão aceitável para seus verdadeiros parâmetros, então você pode ter uma ferramenta de pré-condição de volatilidade realmente poderosa para sua estratégia. Autor, Engenheiro de Finanças tem uma década de experiência na construção de sistemas de negociação e investimento usando métodos matemáticos avançados e métodos científicos. ARIMAGARCH Trading Estratégia sobre o SampP500 Índice de mercado de ações usando R Neste artigo, quero mostrar-lhe como aplicar todo o conhecimento adquirido em A análise de série de tempo anterior posts para uma estratégia de negociação no índice SampP500 US mercado de ações. Veremos que, combinando os modelos ARIMA e GARCH, podemos superar significativamente uma abordagem Buy-and-Hold a longo prazo. Visão Geral da Estratégia A idéia da estratégia é relativamente simples, mas se você quiser experimentar com ela, eu sugiro bastante ler as postagens anteriores sobre a análise de séries temporais para entender o que você estaria modificando. A estratégia é realizada de forma contínua: Para cada Dia, n, os dias k anteriores dos retornos logarítmicos diferenciados de um índice de mercado de ações são usados ​​como uma janela para ajustar um modelo ideal de ARIMA e GARCH. O modelo combinado é usado para fazer uma previsão para o dia seguinte retorna. Se a previsão é negativa, o estoque é curto no fechamento anterior, enquanto que se for positivo, é desejado. Se a previsão é a mesma direção que o dia anterior, então nada é alterado. Para esta estratégia eu usei o máximo de dados disponíveis do Yahoo Finance para o SampP500. Tomei k500, mas este é um parâmetro que pode ser otimizado, a fim de melhorar o desempenho ou reduzir drawdown. O backtest é realizado de uma forma direta vetorizada usando R. Ele não foi implementado no backtestter evento-driven Python até agora. Daí o desempenho alcançado em um sistema de comércio real seria provavelmente um pouco menos do que você pode conseguir aqui, devido à comissão e derrapagem. Implementação da Estratégia Para implementar a estratégia, vamos usar um pouco do código que criamos anteriormente na série de artigos de análise de séries temporais, bem como algumas novas bibliotecas, incluindo o rugarch. Que foi sugerido para mim por Ilya Kipnis sobre a QuantStrat Trader. Vou passar a sintaxe de uma forma passo a passo e, em seguida, apresentar a implementação completa no final, bem como um link para o meu conjunto de dados para o indicador ARIMAGARCH. Ive incluído o último porque ele me levou um par de dias no meu PC dekstop para gerar os sinais Você deve ser capaz de replicar meus resultados na íntegra como o código em si não é muito complexo, embora leve algum tempo para simular se você Realizá-lo na íntegra. A primeira tarefa é instalar e importar as bibliotecas necessárias em R: Se você já tem as bibliotecas instaladas você pode simplesmente importá-los: Com isso feito vai aplicar a estratégia para o SampP500. Podemos usar o quantmod para obter dados que remontam a 1950 para o índice. Yahoo Finance usa o símbolo GPSC. Podemos então criar os retornos logarítmicos diferenciados do Preço de Encerramento do SampP500 e eliminar o valor inicial de NA: Precisamos criar um vetor, previsões para armazenar nossos valores de previsão em datas específicas. Definimos o comprimento foreLength para ser igual ao comprimento de dados de negociação que temos menos k, o comprimento da janela: Nesta fase, precisamos de loop através de todos os dias nos dados de negociação e ajustar um apropriado ARIMA e GARCH modelo para a janela de rolamento de Comprimento k. Dado que tentamos 24 ajustes separados ARIMA e encaixar um modelo GARCH, para cada dia, o indicador pode levar muito tempo para gerar. Usamos o índice d como uma variável de loop e loop de k para o comprimento dos dados de negociação: Então, criamos a janela de rolagem, tomando o SampP500 retorna e selecionando os valores entre 1d e kd, onde k500 para esta estratégia: Mesmo procedimento que no artigo ARIMA para pesquisar através de todos os modelos ARMA com p in e q in, com exceção de p, q0. Envolvemos a chamada arimaFit em um bloco de tratamento de exceções tryCatch R para garantir que, se não conseguirmos um ajuste para um valor específico de p e q, ignoramos e passamos para a próxima combinação de p e q. Observe que definimos o valor integrado de d0 (este é um d diferente do nosso parâmetro de indexação) e, como tal, estamos realmente ajustando um modelo ARMA. Em vez de um ARIMA. O procedimento de looping nos fornecerá o melhor modelo ARMA, em termos do Critério de Informação Akaike, que podemos usar para alimentar nosso modelo GARCH: No próximo bloco de código vamos usar a biblioteca do rugarch, com o GARCH (1,1) modelo. A sintaxe para isso requer que configuremos um objeto de especificação ugarchspec que leva um modelo para a variância ea média. A variância recebe o modelo GARCH (1,1) enquanto a média toma um modelo ARMA (p, q), onde p e q são escolhidos acima. Nós também escolhemos a distribuição sged para os erros. Uma vez escolhida a especificação, realizamos o ajuste real de ARMAGARCH usando o comando ugarchfit, que leva o objeto de especificação, o k retorna do SampP500 e um solucionador de otimização numérica. Optamos por usar híbrido. Que tenta solucionadores diferentes, a fim de aumentar a probabilidade de convergência: Se o modelo GARCH não converge, então simplesmente definir o dia para produzir uma longa previsão, que é claramente um palpite. No entanto, se o modelo não converge, em seguida, saída da data e amanhã previsão direção (1 ou -1) como uma seqüência de caracteres em que ponto o loop é fechado. Para preparar a saída para o arquivo CSV criei uma seqüência de caracteres que contém os dados separados por uma vírgula com a direção de previsão para o dia seguinte: A etapa penúltimo é a saída do arquivo CSV para o disco. Isso nos permite pegar o indicador e usá-lo em um software de backtesting alternativo para análise posterior, se assim for desejado: No entanto, há um pequeno problema com o arquivo CSV tal como está agora. O arquivo contém uma lista de datas e uma previsão para a direção de amanhãs. Se fôssemos carregar isso no código do backtest abaixo, como está, nós realmente estaríamos introduzindo um viés prospectivo porque o valor de predição representaria dados não conhecidos no momento da previsão. A fim de explicar isso, precisamos simplesmente mover o valor previsto um dia antes. Eu encontrei este para ser mais direto usando Python. Desde que eu não quero supor que youve instalado bibliotecas especiais (como pandas), Ive manteve-o puro Python. Aqui está o script curto que leva este procedimento para fora. Certifique-se de executá-lo no mesmo diretório que o arquivo forecast. csv: Neste ponto, agora temos o arquivo de indicador corrigido armazenado em forecastnew. csv. Desde que isso leva uma quantidade substancial de tempo para calcular, Ive forneceu o arquivo completo aqui para você fazer o download de si mesmo: Resultados Estratégia Agora que geramos o nosso arquivo indicador CSV precisamos comparar seu desempenho para Comprar Hold amp. Em primeiro lugar, lemos no indicador a partir do arquivo CSV e armazená-lo como spArimaGarch: Criamos então uma interseção das datas para as previsões ARIMAGARCH eo conjunto original de retornos do SampP500. Podemos então calcular os retornos para a estratégia ARIMAGARCH multiplicando o sinal de previsão (ou -) com o próprio retorno: Uma vez que temos os retornos da estratégia ARIMAGARCH podemos criar curvas de equidade tanto para o modelo ARIMAGARCH quanto para Buy hold. Finalmente, podemos combiná-los em uma única estrutura de dados: Finalmente, podemos usar o comando xyplot para traçar as duas curvas patrimoniais na mesma parcela: A curva de equidade até 6 de outubro de 2015 é a seguinte: Como você pode ver, Período, a estratégia ARIMAGARCH superou significativamente o Buy amp Hold. No entanto, você também pode ver que a maioria do ganho ocorreu entre 1970 e 1980. Observe que a volatilidade da curva é bastante mínima até o início dos anos 80, momento em que a volatilidade aumenta significativamente e os retornos médios são menos impressionantes. Claramente a curva de equidade promete grande desempenho ao longo de todo o período. Em primeiro lugar, vamos considerar o fato de que o modelo ARMA só foi publicado em 1951. Ele wasnt realmente amplamente utilizado até a década de 1970, quando Box Jenkins amplamente discutido em seu livro. Em segundo lugar, o modelo ARCH não foi descoberto (publicamente) até o início dos anos 80, por Engle, e GARCH foi publicado por Bollerslev em 1986. Em terceiro lugar, este backtest foi realmente realizado em um índice de mercado de ações e não um instrumento fisicamente negociável. Para obter acesso a um índice como este, teria sido necessário negociar futuros SampP500 ou uma réplica Exchange Traded Fund (ETF), como SPDR. Portanto, é realmente apropriado aplicar tais modelos a uma série histórica anterior à sua invenção. Uma alternativa é começar a aplicar os modelos a dados mais recentes. De fato, podemos considerar o desempenho nos últimos dez anos, de 1 de janeiro de 2005 a hoje: Como você pode ver a curva de equidade se mantém abaixo de uma estratégia de Comprar amp Hold por quase 3 anos, mas durante o crash da bolsa de 2008/2009 Faz muito bem. Isto faz sentido porque é provável que haja uma correlação serial significativa neste período e será bem capturado pelos modelos ARIMA e GARCH. Uma vez que o mercado recuperou pós-2009 e entra o que parece ser mais uma tendência estocástica, o desempenho do modelo começa a sofrer mais uma vez. Observe que essa estratégia pode ser facilmente aplicada a diferentes índices de ações, ações ou outras classes de ativos. Eu recomendo fortemente que você tente pesquisar outros instrumentos, como você pode obter melhorias substanciais sobre os resultados apresentados aqui. Próximas Etapas Agora que terminamos de discutir a família de modelos ARIMA e GARCH, quero continuar a discussão da análise de séries temporais considerando processos de memória longa, modelos de estados-espaço e séries temporais co-integradas. Essas áreas subsequentes de séries temporais nos apresentarão modelos que podem melhorar nossas previsões para além das apresentadas aqui, o que aumentará significativamente nossa rentabilidade comercial e / ou reduzirá o risco. Aqui está a listagem completa para a geração de indicadores, backtesting e plotagem: E o código Python para aplicar a forecast. csv antes de reimportar: Qualquer um usou modelos ARCA GARCH na negociação forex Eu estou atualmente explorando usando ARMA GARCH para prever posição dias seguintes. Agora eu estou executando alguns modelos nas últimas duas semanas. Vai levar algum tempo para concluir então eu pensei que eu iria perguntar a comunidade de fábrica forex se alguém já explorou estes ainda parece ter fornecido alguns bons resultados sobre o SPY em um post que eu li sobre quintuitive / 2012/08/2. S-for-trading / e estava querendo saber se alguém foi capaz de obter o mesmo resultado com pares de moedas vou tentar e postar os meus resultados quando eles são feitos de computação. Cadastrado em Oct 2008 Status: PIP Slayer. Desejo que eu poderia manter em 268 Posts Para o teste de duas semanas parece ótimo O teste tentou prever os próximos dias retornar e retornou quer um 1, 0 ou -1, em seguida, com base nesse valor seria abrir um comércio longo curto ou nenhum comércio. O modelo armagarch leva olhares para as últimas 40 barras e escolhe o modelo arma que tem o menor AIC. Em seguida, aplique um garch 1,1 para considerar a volatilidade. A linha azul representa os retornos do preço de fechamento do gráfico EURUSD de 4 horas como se você estivesse comprando e mantivesse um comércio longo. A linha verde representa o Modelo ARMAGARCH no qual foi comprado um comércio longo ou curto. Isso é apenas cerca de duas semanas 72 bar de dados de ser analisado parece promissor. Imagem anexa (clique para ampliar) Não sei por que demorar tanto tempo este ir ao redor talvez desde que eu aumentei tanto a história. Sua previsão cada barra e, em seguida, reajusta cada barra. Funciona através de uma série de modelos arima (0,0) - gt (5,5) para que cada barra gerar algo como 35 modelos e escolhe o melhor ajuste fora daqueles com base no AIC. Então se encaixa um garch (0,0) apenas para certificar-se de volatilidade estava lá e para manter de ter que fazer computação adicional eu ciclo não através de pedidos de garch. Bastante pesado computacional sábio gerando o backtest. Mesmo correndo em Linux para utilizar. Olá Depois de alguns meses de trabalho você veio acima com algo interresting ID gostaria de dar outra tentativa para a AR (F) (I) MA - () modelos GARCH, mas Im sempre bloqueado no grande número de amostras necessárias (como 10000 para ARFIMA). Estou interessado em mesuring não previsão. Minha decomposição wavelet me dá resultados ruins quando a volatilidade repentinamente varia, então leva algum tempo (sempre muito longo) para convergir novamente. Eu gostaria de ver se eu posso combinar os dois métodos (não sei como ainda). Nenhuma ganância. Sem medo. Apenas matemática. Gostaria de compartilhar com vocês o que estou fazendo usando o modelo ARMA ea análise de resíduos do modelo. Eu estou trabalhando em EURUSD, e eu estou tentando encontrar uma maneira de colocar ordem com base na modelagem ARMA. Coleta de dados, transformação de dados e montagem do modelo: Eu estou coletando cada EOD Close do instrumento EURUSD, e eu calculo a diferença de log para transformar esta série de tempo em um processo estacionário. Então, usando Box Jenkins, eu ajustei os parâmetros do Modelo ARMA. Imagem anexa (clique para ampliar) Imagem anexa (clique para ampliar) Após o modelo instalado, analiso os resíduos do modelo. O processo dos resíduos do modelo é um processo estacionário e segue uma distribuição normal. Imagem anexa (clique para ampliar)

No comments:

Post a Comment