Tuesday, 18 July 2017

Tutorial De Mediação Em Movimento Auto Intensivo


Introdução a ARIMA: modelos não-sazonais: equação de previsão ARIMA (p, d, q): os modelos ARIMA são, na teoria, a classe mais geral de modelos para prever uma série de tempo que pode ser feita para ser 8220stação2008 por diferenciação (se necessário), talvez Em conjunto com transformações não-lineares, como log ou desinflando (se necessário). Uma variável aleatória que é uma série temporal é estacionária se suas propriedades estatísticas são todas constantes ao longo do tempo. Uma série estacionária não tem tendência, suas variações em torno de sua média têm uma amplitude constante, e ela muda de forma consistente. Isto é, seus padrões de tempo aleatório de curto prazo sempre parecem os mesmos em um sentido estatístico. A última condição significa que suas autocorrelações (correlações com seus próprios desvios anteriores da média) permanecem constantes ao longo do tempo, ou de forma equivalente, que seu espectro de potência permanece constante ao longo do tempo. Uma variável aleatória deste formulário pode ser visualizada (como de costume) como uma combinação de sinal e ruído, e o sinal (se um é aparente) pode ser um padrão de reversão média rápida ou lenta, ou oscilação sinusoidal, ou alternância rápida no signo , E também poderia ter um componente sazonal. Um modelo ARIMA pode ser visto como um 8220filter8221 que tenta separar o sinal do ruído, e o sinal é então extrapolado para o futuro para obter previsões. A equação de previsão de ARIMA para uma série de tempo estacionária é uma equação linear (isto é, regressão) em que os preditores consistem em atrasos da variável dependente e / ou atrasos dos erros de previsão. Isto é: valor previsto de Y uma constante e ou uma soma ponderada de um ou mais valores recentes de Y e ou uma soma ponderada de um ou mais valores recentes dos erros. Se os preditores consistem apenas em valores atrasados ​​de Y. é um modelo autoregressivo puro (8220 self-regressed8221), que é apenas um caso especial de um modelo de regressão e que poderia ser equipado com um software de regressão padrão. Por exemplo, um modelo autoregressivo de primeira ordem (8220AR (1) 8221) para Y é um modelo de regressão simples no qual a variável independente é apenas Y rezagada por um período (LAG (Y, 1) em Statgraphics ou YLAG1 em RegressIt). Se alguns dos preditores são atrasos nos erros, um modelo ARIMA não é um modelo de regressão linear, porque não existe nenhuma maneira de especificar o erro 8222 do último erro82221 como uma variável independente: os erros devem ser computados numa base de período a período Quando o modelo é ajustado para os dados. Do ponto de vista técnico, o problema com o uso de erros atrasados ​​como preditores é que as previsões do modelo8217s não são funções lineares dos coeficientes. Mesmo que sejam funções lineares dos dados passados. Assim, os coeficientes nos modelos ARIMA que incluem erros atrasados ​​devem ser estimados por métodos de otimização não-linear (8220hill-climbing8221) ao invés de apenas resolver um sistema de equações. O acrônimo ARIMA significa Auto-Regressive Integrated Moving Average. Lags da série estacionada na equação de previsão são chamados quota de termos degressivos, os atrasos dos erros de previsão são chamados quotmoving termos de média, e uma série de tempo que precisa ser diferenciada para ser estacionada é uma versão quotintegratedquot de uma série estacionária. Modelos de caminhada aleatória e tendência aleatória, modelos autoregressivos e modelos de suavização exponencial são todos os casos especiais de modelos ARIMA. Um modelo ARIMA não-sazonal é classificado como um quot de quotARIMA (p, d, q), onde: p é o número de termos autorregressivos, d é o número de diferenças não-sazonais necessárias para a estacionaridade e q é o número de erros de previsão atrasados ​​em A equação de predição. A equação de previsão é construída da seguinte forma. Primeiro, digamos a d ª diferença de Y. o que significa: Observe que a segunda diferença de Y (o caso d2) não é a diferença de 2 períodos atrás. Em vez disso, é a primeira diferença de primeira diferença. Que é o análogo discreto de uma segunda derivada, isto é, a aceleração local da série em vez da sua tendência local. Em termos de y. A equação geral de previsão é: Aqui, os parâmetros de média móvel (9528217s) são definidos de modo que seus sinais são negativos na equação, seguindo a convenção introduzida por Box e Jenkins. Alguns autores e software (incluindo a linguagem de programação R) os definem para que eles tenham sinais de mais. Quando os números reais estão conectados à equação, não há ambigüidade, mas é importante saber qual a convenção que seu software usa quando você está lendo a saída. Muitas vezes, os parâmetros são indicados por AR (1), AR (2), 8230 e MA (1), MA (2), 8230 etc. Para identificar o modelo ARIMA apropriado para Y. você começa por determinar a ordem de diferenciação (D) necessidade de estacionar a série e remover as características brutas da sazonalidade, talvez em conjunto com uma transformação estabilizadora de variância, como o registro ou a desinflação. Se você parar neste ponto e prever que a série diferenciada é constante, você ajustou apenas uma caminhada aleatória ou modelo de tendência aleatória. No entanto, a série estacionada ainda pode ter erros auto-correlacionados, sugerindo que alguns números de AR (p 8805 1) e ou alguns termos de MA de número (q 8805 1) também são necessários na equação de previsão. O processo de determinação dos valores de p, d e q que são melhores para uma determinada série de tempo será discutido em seções posteriores das notas (cujos links estão no topo desta página), mas uma visualização de alguns tipos Os modelos ARIMA não-sazonais que são comumente encontrados são dados abaixo. Modelo autoregressivo de primeira ordem ARIMA (1,0,0): se a série estiver estacionada e autocorrelada, talvez ela possa ser predita como um múltiplo de seu próprio valor anterior, além de uma constante. A equação de previsão neste caso é 8230, que é regredida por si mesmo atrasada por um período. Este é um modelo 8220ARIMA (1,0,0) constante8221. Se a média de Y for zero, então o termo constante não seria incluído. Se o coeficiente de inclinação 981 1 for positivo e menor que 1 em magnitude (deve ser inferior a 1 em magnitude se Y estiver estacionário), o modelo descreve o comportamento de reversão média em que o valor do período 8217 seguinte deve ser previsto 981 1 vezes como Muito longe da média, já que esse valor do período é de $ 127. Se 981 1 for negativo, ele prevê um comportamento de reversão média com alternância de sinais, ou seja, ele também prevê que Y estará abaixo do período médio seguinte se estiver acima da média desse período. Em um modelo autoregressivo de segunda ordem (ARIMA (2,0,0)), haveria um termo Y t-2 também à direita e assim por diante. Dependendo dos sinais e das magnitudes dos coeficientes, um modelo ARIMA (2,0,0) pode descrever um sistema cuja reversão média ocorre de forma sinusoidalmente oscilante, como o movimento de uma massa em uma mola sujeita a choques aleatórios . ARIMA (0,1,0) caminhada aleatória: se a série Y não estiver estacionária, o modelo mais simples possível para ele é um modelo de caminhada aleatória, que pode ser considerado como um caso limitante de um modelo AR (1) no qual o autorregressivo O coeficiente é igual a 1, ou seja, uma série com reversão média infinitamente lenta. A equação de predição para este modelo pode ser escrita como: onde o termo constante é a mudança média do período para o período (ou seja, a derivação de longo prazo) em Y. Esse modelo poderia ser ajustado como um modelo de regressão sem intercepção em que o A primeira diferença de Y é a variável dependente. Uma vez que inclui (apenas) uma diferença não-sazonal e um termo constante, ela é classificada como um modelo quotARIMA (0,1,0) com constante. quot O modelo random-walk-without-drift seria um ARIMA (0,1, 0) modelo sem modelo ARADA constante (1,1,0) diferenciado do modelo autoregressivo de primeira ordem: se os erros de um modelo de caminhada aleatória forem autocorrelacionados, talvez o problema possa ser corrigido adicionando um atraso da variável dependente à equação de predição - - é Regressando a primeira diferença de Y em si mesma atrasada por um período. Isso produziria a seguinte equação de predição: que pode ser rearranjada para Este é um modelo autoregressivo de primeira ordem com uma ordem de diferenciação não-sazonal e um termo constante - ou seja. Um modelo ARIMA (1,1,0). ARIMA (0,1,1) sem alisamento exponencial simples constante: Outra estratégia para corrigir erros autocorrelacionados em um modelo de caminhada aleatória é sugerida pelo modelo de suavização exponencial simples. Lembre-se de que, para algumas séries temporais não estacionárias (por exemplo, que exibem flutuações ruidosas em torno de uma média variando lentamente), o modelo de caminhada aleatória não funciona, bem como uma média móvel de valores passados. Em outras palavras, ao invés de tomar a observação mais recente como a previsão da próxima observação, é melhor usar uma média das últimas observações para filtrar o ruído e, com mais precisão, estimar a média local. O modelo de suavização exponencial simples usa uma média móvel ponderada exponencialmente de valores passados ​​para alcançar esse efeito. A equação de predição para o modelo de suavização exponencial simples pode ser escrita em várias formas matematicamente equivalentes. Um dos quais é o chamado formulário 8220error correction8221, no qual a previsão anterior é ajustada na direção do erro que ele fez: porque e t-1 Y t-1 - 374 t-1 por definição, isso pode ser reescrito como : Que é uma equação de previsão ARIMA (0,1,1) sem constante constante com 952 1 1 - 945. Isso significa que você pode ajustar um alisamento exponencial simples especificando-o como um modelo ARIMA (0,1,1) sem Constante e o coeficiente estimado de MA (1) corresponde a 1-menos-alfa na fórmula SES. Lembre-se que, no modelo SES, a idade média dos dados nas previsões de 1 período anterior é de 1 945, o que significa que tenderão a atrasar as tendências ou os pontos de viragem em cerca de 1 945 períodos. Segue-se que a idade média dos dados nas previsões de 1 período de um ARIMA (0,1,1) - sem modelo constante é 1 (1 - 952 1). Assim, por exemplo, se 952 1 0.8, a idade média é 5. Como 952 1 aborda 1, o modelo ARIMA (0,1,1) sem modelo constante torna-se uma média móvel de muito longo prazo e, como 952 1 Aproxima-se de 0, torna-se um modelo de caminhada aleatória sem drift. O que é a melhor maneira de corrigir a autocorrelação: adicionar termos AR ou adicionar termos MA Nos dois modelos anteriores discutidos acima, o problema dos erros auto-correlacionados em um modelo de caminhada aleatória foi reparado de duas formas diferentes: adicionando um valor atrasado da série diferenciada Para a equação ou adicionando um valor atrasado do erro de previsão. Qual abordagem é melhor Uma regra de ouro para esta situação, que será discutida com mais detalhes mais adiante, é que a autocorrelação positiva geralmente é melhor tratada adicionando um termo AR ao modelo e a autocorrelação negativa geralmente é melhor tratada adicionando um Termo MA. Nas séries temporais de negócios e econômicas, a autocorrelação negativa surge frequentemente como um artefato de diferenciação. (Em geral, a diferenciação reduz a autocorrelação positiva e pode até causar uma mudança de autocorrelação positiva para negativa). Assim, o modelo ARIMA (0,1,1), no qual a diferenciação é acompanhada por um termo MA, é mais usado do que um Modelo ARIMA (1,1,0). ARIMA (0,1,1) com alisamento exponencial constante e constante: ao implementar o modelo SES como modelo ARIMA, você realmente ganha alguma flexibilidade. Em primeiro lugar, o coeficiente estimado de MA (1) pode ser negativo. Isso corresponde a um fator de alisamento maior do que 1 em um modelo SES, que geralmente não é permitido pelo procedimento de montagem do modelo SES. Em segundo lugar, você tem a opção de incluir um termo constante no modelo ARIMA, se desejar, para estimar uma tendência média não-zero. O modelo ARIMA (0,1,1) com constante tem a equação de previsão: as previsões de um período anteriores deste modelo são qualitativamente similares às do modelo SES, exceto que a trajetória das previsões de longo prazo é tipicamente uma Linha inclinada (cuja inclinação é igual a mu) em vez de uma linha horizontal. ARIMA (0,2,1) ou (0,2,2) sem alisamento exponencial linear constante: modelos de alisamento exponencial linear são modelos ARIMA que utilizam duas diferenças não-sazonais em conjunto com os termos MA. A segunda diferença de uma série Y não é simplesmente a diferença entre Y e ela mesma atrasada por dois períodos, mas é a primeira diferença da primeira diferença - isto é. A mudança de mudança de Y no período t. Assim, a segunda diferença de Y no período t é igual a (Y t - Y t-1) - (Y t-1 - Y t-2) Y t - 2Y t-1 Y t-2. Uma segunda diferença de uma função discreta é análoga a uma segunda derivada de uma função contínua: mede a quotaccelerationquot ou quotcurvaturequot na função em um determinado ponto no tempo. O modelo ARIMA (0,2,2) sem constante prediz que a segunda diferença da série é igual a uma função linear dos dois últimos erros de previsão: o que pode ser rearranjado como: onde 952 1 e 952 2 são o MA (1) e MA (2) coeficientes. Este é um modelo de suavização exponencial linear geral. Essencialmente o mesmo que o modelo Holt8217s, e o modelo Brown8217s é um caso especial. Ele usa médias móveis exponencialmente ponderadas para estimar um nível local e uma tendência local na série. As previsões de longo prazo deste modelo convergem para uma linha reta cuja inclinação depende da tendência média observada no final da série. ARIMA (1,1,2) sem alisamento exponencial linear constante de tendência amortecida. Este modelo está ilustrado nos slides que acompanham os modelos ARIMA. Ele extrapola a tendência local no final da série, mas acha-se em horizontes de previsão mais longos para introduzir uma nota de conservadorismo, uma prática que tem suporte empírico. Veja o artigo em quotPor que a Tendência Damped funciona por Gardner e McKenzie e o artigo de QuotGolden Rulequot de Armstrong et al. para detalhes. Em geral, é aconselhável manter os modelos em que pelo menos um de p e q não é maior do que 1, ou seja, não tente se ajustar a um modelo como o ARIMA (2,1,2), pois isso provavelmente levará a uma superposição E quotcommon-factorquot questões que são discutidas em mais detalhes nas notas sobre a estrutura matemática dos modelos ARIMA. Implementação da planilha: os modelos ARIMA, como os descritos acima, são fáceis de implementar em uma planilha eletrônica. A equação de predição é simplesmente uma equação linear que se refere a valores passados ​​de séries temporais originais e valores passados ​​dos erros. Assim, você pode configurar uma planilha de previsão ARIMA armazenando os dados na coluna A, a fórmula de previsão na coluna B e os erros (dados menos previsões) na coluna C. A fórmula de previsão em uma célula típica na coluna B seria simplesmente Uma expressão linear que se refere a valores nas linhas precedentes das colunas A e C, multiplicadas pelos coeficientes apropriados de AR ou MA armazenados nas células em outro lugar na planilha. Modelos de AARM para negociação Neste tutorial vou compartilhar meu R038D e experiência comercial usando o Bem conhecido das estatísticas de modelo de modelo móvel autoregressivo (ARMA). Há muito escrito sobre esses modelos, no entanto, eu recomendo a série de tempos introdutórios com a R. que eu acho é uma combinação perfeita entre fundo teórico leve e implementações práticas em R. Outra boa leitura é o online e-book Forecasting: princípios e Prática escrita por Rob Hyndman. Um especialista em previsão estatística e o autor do excelente pacote R de previsão. Começando em R, estou principalmente usando o pacote fArma, que é um bom invólucro com funcionalidade estendida em torno da função arima do pacote de estatísticas (usado no livro acima mencionado). Aqui está uma sessão simples de montagem de um modelo ARMA para os retornos diários do S038P 500: Para mais detalhes, consulte a literatura e os pacotes, eu só quero enfatizar alguns pontos: modelamos os retornos diários em vez dos preços . Existem múltiplos motivos: desta forma, as séries financeiras geralmente se tornam estacionárias, precisamos de alguma forma para 8220normalize8221 uma série, etc. Usamos a função diff e log para calcular os retornos diários em vez das porcentagens. Não só isso é uma prática padrão em estatísticas, mas também fornece uma boa aproximação boa aos retornos discretos. A abordagem que vou apresentar aqui é uma forma de backtesting walk-forward. Ao caminhar a série dia a dia, usaremos um histórico de certo comprimento para encontrar o melhor modelo. Então, usaremos esse modelo para prever o retorno do dia seguinte8217s. Se a predição é negativa, assumimos uma posição curta, caso contrário assumiremos uma posição longa. Um exemplo tornará as coisas mais claras: após o encerramento de 11 de junho de 2012, calculamos os últimos 500 retornos diários. Usando estes retornos, procuramos no espaço dos modelos ARMA e selecionamos o modelo de melhor ajuste (em relação a algumas métricas e alguns requisitos). Finalmente, usamos esse modelo para calcular a previsão para o retorno do tomorrow8217s e usar o sinal do retorno para decidir a posição apropriada. Escolhendo um bom modelo O primeiro obstáculo para este método antes que ele possa ser útil para nós, é selecionar os parâmetros do modelo. No caso de ARMA, existem dois parâmetros. Em outras palavras, há um número infinito de escolhas: (0,1), (1,0), (1,1), (2,1), etc. Como sabemos quais parâmetros usar? Uma abordagem comum em As estatísticas para quantificar a qualidade do teste de ajuste são as estatísticas da AIC (para Akaike Information Criteria). Uma vez que o ajuste está pronto, o valor das estatísticas aic é acessível através de: Existem outras estatísticas, é claro, no entanto, geralmente os resultados são bastante semelhantes. Para resumir, tudo o que precisamos é um loop para passar por todas as combinações de parâmetros que consideramos razoáveis, por exemplo, de (0,0) a (5,5), inclusive, para cada par de parâmetros, ajuste o modelo e, finalmente, escolha o modelo com O AIC mais baixo ou alguma outra estatística. Observe que, por vezes, o armaFit não consegue encontrar um ajuste e retorna um erro, deixando o loop imediatamente. ArmaSearch lida com este problema usando a função tryCatch para capturar qualquer erro ou aviso e retornar um valor lógico (FALSE) em vez de interromper tudo e sair com um erro. Assim, podemos distinguir um retorno de função errado e normal apenas por verificar o tipo de resultado. Um pouco confuso provavelmente, mas funciona. Alguns pacotes R, previsão e rugarch, por exemplo, fornecem uma função similar auto. arima fora da caixa. Assim, pode-se construir sua infraestrutura em torno de uma delas. Previsão Uma vez que os parâmetros são selecionados, it8217s tempo para determinar a posição ao fechar. Uma maneira de fazer isso é por uma previsão um dia antes, se a predição é negativa (lembre-se da série em que estamos operando é o retorno diário), então a posição desejada é curta, senão it8217s de longa. Agora, para construir um indicador para o teste de volta, pode-se caminhar a série de retorno diário e, em cada ponto, execute as etapas que cobrimos até agora. O loop principal parece ser (abreviado de propósito): onde o histórico é o período de reflexão a considerar em cada ponto, geralmente uso 500, que é cerca de dois anos de dados. Em outras palavras, para determinar a posição em cada dia individual (o dia anterior próximo ao fechamento do dia atual determina o retorno), usamos o histórico de 500 dias, atrasado por dias atrasados. Você verá mais tarde como os atrasos entram em prática na prática. Observe, que a previsão também deve ser cercada por um bloco tryCatch. A armaSearch também possui a funcionalidade agradável para determinar se um modelo tem uma previsão ou não (preveja êxito ou não, este teste é controlado através do parâmetro forForecast). Melhorando o desempenho O número de cálculos que temos a fazer, acrescenta-se rapidamente. Por exemplo, por 10 anos de dados históricos, precisamos calcular cerca de 2.520 dias de negociação. Para cada dia, vamos ajustar e prever pelo menos 35 (3566-1, 0 a 5, tanto para o componente AR e MA, mas excluindo os modelos (0,0)). Multiplicando o número de modelos pelo número de dias, e já estamos a olhar para mais de 88 mil modelos que se encaixam em 8211 que são muitos cálculos. Uma maneira de melhorar o desempenho desses cálculos necessários pode ser conseguida através da utilização de CPUs de múltiplos núcleos. Minha abordagem é paralelizar a seleção do modelo, a função armaSearch no código acima. Embora esta não seja a abordagem mais eficiente, certamente é mais prática, pois também aumentará o desempenho do armaSearch quando usado de forma independente. Eu ganho8217t postar a versão final do código aqui devido ao comprimento do it8217s. Eu lhe darei o link GIST em vez disso. A volatilidade da modelagem com o GARCH Financial series temporárias são aleatórias em geral. Uma das poucas propriedades que exibem é o agrupamento de volatilidade. Isso geralmente é alcançado estendendo a previsão ARMA com um modelo GARCH. Soa complexo, e os detalhes teóricos são complexos de fato, mas resulta ser bastante direto em R: É claro, também precisamos modificar todas as funções relevantes, como armaSearch. As chamadas para garchFit e prever também precisam ser tratadas através do tryCatch. Observe também que prever retorna uma matriz para modelos GARCH. Se você estiver interessado no código-fonte completo, pode contactar-nos. S038P 500 Performance Let8217s começam com a curva de equidade da aplicação da estratégia ARMAGARCH ao longo dos 60 anos completos (desde 1950) dos dados históricos S038P 500. ARMA vs Buy-and-Hold Parece fantástico Na verdade, isso me impressionou tanto que procurei erros no código por algum tempo. Mesmo em um gráfico logarítmico, o desempenho deste método é deslumbrante 8211 CAGR de 18,87 e a estratégia ARMAGARCH atinge esse desempenho com uma redução máxima comparável de 56. Para calcular o crescimento da estratégia ARMA, primeiro precisamos do indicador diário (esse indicador leva aproximadamente Dois dias para calcular com todas as otimizações que passei). A primeira coluna é a data, a segunda a posição para este dia: 1 para longo, -1 para baixo, 0 para nenhum. Observe que a posição já está alinhada com o dia do retorno (é calculada no final do dia anterior), ou seja, o indicador está alinhado corretamente com os retornos 8211, não é necessário mudar para a direita através do atraso. O indicador, a primeira coluna, precisa ser multiplicado com os retornos diários S038P 500. O resto das colunas são irrelevantes e espero que seja auto-explicativo. Let8217s encerra o post com o código que carrega o indicador e traça o gráfico: Nunca perca uma atualização Inscreva-se para R-bloggers para receber e-mails com as últimas postagens R. (Você não verá esta mensagem novamente).

No comments:

Post a Comment