Monday 14 August 2017

Autoregressive Moving Average C ++


Análise de AutoRegression (AR) Escrito por Paul Bourke Créditos do código-fonte: Alex Sergejew, Nick Hawthorn, Rainer Hegger. Novembro de 1998 Introdução Um modelo autoregressivo (AR) também é conhecido na indústria de design de filtros como um filtro de resposta de impulso infinito (IIR) ou um filtro de todos os pólos, e às vezes é conhecido como um modelo de entropia máxima em aplicações de física. Há memória ou feedback e, portanto, o sistema pode gerar dinâmicas internas. A definição que será usada aqui é a seguinte, onde i são os coeficientes de autorregressão, x t é a série em investigação, e N é a ordem (comprimento) do filtro, que geralmente é muito inferior ao comprimento da série. O termo de ruído ou o resíduo, epsilon no acima, é quase sempre assumido como um ruído branco gaussiano. Verbalmente, o termo atual da série pode ser estimado por uma soma ponderada linear de termos anteriores na série. Os pesos são os coeficientes de autorregressão. O problema na análise AR é derivar os melhores valores para um dado uma série x t. A maioria dos métodos assume que a série x t é linear e estacionária. Por convenção, a série x t é assumida como sendo zero, se não, este é simplesmente outro termo a 0 na frente da soma na equação acima. Existem várias técnicas para calcular os coeficientes de AR. As duas principais categorias são os mínimos quadrados e o método Burg. Dentro de cada um destes existem algumas variantes, o método mais comum dos mínimos quadrados baseia-se nas equações de Yule-Walker. O MatLab possui uma ampla gama de técnicas suportadas, note que ao comparar algoritmos de diferentes fontes há duas variações comuns, primeiro é se a média é ou não removida da série, a segunda é o sinal dos coeficientes retornados (isso depende da Definição e é corrigido simplesmente invando o sinal de todos os coeficientes). O método mais comum para derivar os coeficientes envolve a multiplicação da definição acima por x t-d. Tomando os valores da expectativa e a normalização (ver Box e Jenkins, 1976) fornece um conjunto de equações lineares denominadas equações de Yule-Walker que podem ser escritas em matriz como onde r d é o coeficiente de autocorrelação em atraso d. Nota: a diagonal é r 0 1. O exemplo a seguir é apresentado com algum grau de detalhe para permitir a replicação e a comparação dos resultados com outros pacotes. Os dados são 1000 amostras de uma soma de 4 sinusoides e é fornecido aqui. Os dados se parecem com isso. Embora não seja particularmente útil, uma análise de ordem 1 AR dá um coeficiente de 0,941872, isso não é totalmente surpreendente, pois diz que, ao olhar apenas um termo na série, o próximo termo da série provavelmente é quase a Mesmo, ie: x t1 0.941872 xt A tabela a seguir fornece os coeficientes para uma série de pedidos de modelo para o exemplo acima. À medida que a ordem aumenta, as estimativas geralmente melhoram (isso pode não ser necessariamente para dados ruidosos ao empregar grandes pedidos de AR). Muitas vezes, é útil traçar o erro RMS entre as séries estimadas pelos coeficientes AR e as séries reais. Um exemplo para o caso acima é mostrado abaixo. Tal como é típico na análise AR, o erro RMS cai muito rápido e depois desaparece. Casos especiais O erro RMS permanece constante à medida que o pedido AR é aumentado. A maioria das rotinas de AR falha neste caso mesmo que a solução seja direta (a 1 1, senão a i 0). Uma matriz singular resulta na formulação de mínimos quadrados. Talvez a melhor maneira de testar o código para computar os coeficientes de AR é gerar séries artificiais com coeficientes conhecidos e, em seguida, verifique se o cálculo AR dá os mesmos resultados. Por exemplo, pode-se gerar a análise da série AR usando um grau de 5 deve produzir os mesmos coeficientes que os usados ​​para gerar a série. Os dados desta série estão disponíveis aqui e são ilustrados abaixo: Este caso de teste é da ordem 7, os coeficientes são: A série bruta pode ser encontrada aqui e os dados são traçados abaixo. Este caso de teste é de ordem 2, os coeficientes são: a 1 1.02, a 2 -0.53, a série bruta pode ser encontrada aqui e os dados são traçados abaixo. Selecionando a ordem do modelo Não existe uma maneira direta de determinar a ordem do modelo correto. À medida que aumenta a ordem do modelo, o erro RMS quadrado médio RMS geralmente diminui rapidamente até algum fim e depois mais lento. Uma ordem logo após o ponto em que o erro RMS se estica é normalmente uma ordem apropriada. Existem técnicas mais formais para escolher a ordem do modelo, sendo o mais comum o Critério de Informação Akaike. Código fonte O código fonte para calcular os coeficientes AR está disponível aqui. Dois algoritmos estão disponíveis, o método de mínimos quadrados eo método Burg Maximum Entropy. Uma versão modificada (burg. c) do método de Burg (matrizes de índice zero do estilo C) contribuído por Paul Sanders. ARMA Modelos para Negociação Neste tutorial vou compartilhar meu R038D e experiência de negociação usando o bem conhecido das estatísticas Autoregressive Moving Modelo médio (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. O código fonte completo está disponível a partir de um GitHub Gist. 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 abordadas nesta publicação). 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 a postagem com o código que carrega o indicador e traça o gráfico: Olá Apenas por curiosidade aqui, os resultados que você publicou foram produzidos examinando os retornos diários em um determinado período de lookback e depois tentando prever o retorno do dia seguinte. Você já experimentou sua estratégia ARMA em retornos semanais. Como os resultados se acumulam contra a estratégia, onde os retornos diários são alimentados em seu modelo. Além disso, é interessante ver alguns outros números, como os vencedores, por exemplo. Você está usando este modelo atualmente para trocar dinheiro real. Ótimo post e continue com o bom trabalho. Olá. Eu não tentei retornos semanais, provavelmente vale a pena olhar para ele, embora para retornos semanais eu prefiro usar um modelo levando em consideração outros recursos além de retornos. Mais adequado para um SVM ou uma Rede Neural. Sim, usei a estratégia ARMAGARCH para negociar um instrumento financeiro único (não o SPY) há mais de um ano. Esta é a principal razão pela qual estou relutante em compartilhar o código. Por último, estou olhando para atualizar o post com mais resumos e estatísticas de negócios, mas haven8217t feito até agora, porque eu não poderia apresentar um formato satisfatório (eu sou exigente). :) Olá, ivannp, estou extremamente grato a você Para colocar códigos e informações úteis para análise quantitativa. Não tenho visto procedimentos e códigos organizados para R para análise de quantos em qualquer outro lugar. Eu tenho visitado seu blog há muito tempo. Estou tentando seguir os códigos aqui, mas tenho medo de que eu definitivamente esteja faltando alguns passos aqui. A função de armação me dá arma (5,2) para 8216SPY8217, mas você está usando arma (0,2) para garchfit. Posso saber porquê. Se estou faltando algo, guie-me e você pode me enviar o código completo para prabinsethgmail. Agradeço antecipadamente oi Prabin, sempre feliz de ouvir as pessoas que gostam do blog, me inspira a não negligenciá-lo. :) O código ao qual você está se referindo é apenas uma ilustração de como usar o garchFit. O (0,2) é completamente aleatório 8211 Eu apenas escolho alguns números. Para o uso da vida real, é preciso criar uma função garchSearch, semelhante à armaSearch mostrada. É semelhante, mas há diferença: os modelos possíveis consistem em quatro elementos, os dois primeiros são (AR, MA), mas também há dois componentes GARCH, garchFit substitui o armaFit e também os resultados do garchFit são um pouco mais detalhados (Uma matriz vs um número). O código não é totalmente funcional como está. A razão pela qual eu não quero postar o código completo é que eu uso diariamente. Os resultados da execução diária no SPY estão disponíveis na página S038P 500. Possui a posição diária baseada em ARMAGARCH, bem como, a tabela de ação para o final do dia. Isso indica o estado sobre ARMAGARCH, mas eu prometo que ganhei 8217t fazer o mesmo por coisas novas (SVMs estão chegando). Vou publicar a versão totalmente funcional do código, embora eu não tenha atualizado com melhorias. Oi, postagem muito interessante. Tenho uma pergunta sobre a função armaComputeForecasts que produz previsões contínuas. Quando isso produz uma previsão, a data do previsão (ou seja, o índice na linha xts correspondente) corresponde à data em que foi criada ou à data em que está prevista, ou seja, eu precisaria atrasar a execução como de costume com um indicador ou Isso já foi cuidado. Uma vez que o desempenho superior da ARMA parece bastante específico do período (a grande maioria dos retornos em excesso parece ser gerada entre 1965-75), seria muito mais útil ver um gráfico de retornos cumulativos rolantes para cada um Estratégia (ou seja, mais de 3 ou 5 anos). Além disso, os retornos de ARMA são presumivelmente brutos de t-cost aqui, então a rotatividade da estratégia é outra consideração muito importante (você pode compartilhar o que era). Oi, no meu antigo blog (theaverageinvestor. wordpress 2011 07), mencionei que houve um comércio em média a cada 2,35 dias. Lembro-me de contar os negócios e dividir os dias. O indicador para a série está disponível aqui: carregamentos de conteúdo quintuplicado wp 2012 08 gspcInd3.csv. Ele precisa ser comparado com o índice de caixa S038P 500, sem atraso, mas pode-se obter todos os tipos de estatísticas. Certamente vou fazer isso um dia, não tenho certeza quando. Com esta estratégia, não estou muito preocupado com os custos de transação. Usando uma conta regular e de varejo em Interactive Brokers, pode-se trocar uma parcela de SPY por 0,005. No preço atual de 140, que 8217s são insignificantes, a menos que seja feito algumas vezes por dia. Oi, seu post não é apenas interessante para ler, mas também atua como um guia para pessoas novas no campo das finanças quantitativas. Com um iniciante neste campo, seu blog parece ser uma mina de ouro. Tenho algumas perguntas, no entanto , Usei seu código do Armasearch em um instrumento específico e descobri que, com os indicadores, não deu um desempenho melhor do que comprar e segurar, então, eu tentei entrar no código garchFit usando o garch (1,1) como Os erros do garch, você poderia me orientar gentilmente para que eu pudesse fazer isso. Os exemplos ou links relevantes seriam muito úteis. Além disso, não entendi do seu código, como exatamente para executar o comércio, ou seja, pontos de entrada e saída, você poderia guiar-me gentilmente no mesmo. Olá, o seu blog não é apenas interessante, mas também informativo para pessoas novas no mundo de Finanças quantitativas. Eu tenho algumas perguntas, usei a função de armadura para um determinado instrumento e depois de testar os achados achou que os resultados eram inferiores para comprar e segurar, então estou tentando ajustar o garch (1,1), você poderia guia gentilmente Sobre o que fazer, também pode me ajudar em relação aos pontos de entrada e saída do indicador gerado por você. Olá, esse é meu melhor esforço (sem fornecer o próprio código fonte) para explicar como usar o garchFit. Você pode querer tentar as outras abordagens de arma, eu recomendaria o pacote de previsão e o livro do autor8217s (otexts fpp) ou o pacote de rugisc. Ambos os pacotes fornecem uma abordagem mais científica e avançada para a seleção do modelo de arma. Aplicar as idéias neste blog na prática exige uma quantidade significativa de trabalho adicional. Meu único aconselhamento, que descrevi em outros posts, é pensar em se aplicar em prática real em cada etapa. Muito obrigado pelas excelentes apresentações que você fornece para iniciantes (como eu) em finanças quantitativas. No seu trabalho, você está caminhando as séries temporais dia a dia, encontrando o melhor modelo ARMA 8211 ARMA (p, q) e depois use o modelo para prever a direção do dia seguinte8217s. Então, para melhorar o desempenho, você usa os melhores paremeters de arma (p, q) para esse tempo com o GARCH (1,1) para criar um novo modelo e usá-lo para prever a direção do dia seguinte8217s. Então você tem um modelo com 4 parâmetros usados ​​no garchFit. Estou usando uma biblioteca GARCH diferente (não em R, está em C) e nela os parâmetros para o modelo são apenas 2 (em vez de 4): o número de parâmetros auto-regressivos (AR) eo número de média móvel (MA) parâmetros. Você poderia avisar sobre como usar seu método no meu cenário (como sempre criando um GRACH (1,1) sem considerar o ARMA (P, Q) é diferente). Parece que a razão pela qual você tem apenas 2 parâmetros para o seu modelo é porque você está tentando ajustar sua data a um modelo ARMA sem o componente de heterocedasticidade. O método GarchFit dentro da biblioteca fGarch em R permite caber em um modelo autoregressivo generalizado (daí Os 4 parâmetros) Pergunta rápida (relacionada) para você: você poderia me apontar para a biblioteca C que você está se referindo Eu, eu mesmo, sou bastante gostoso de C (como eu tenho uma arquitetura inteira construída em torno dela) e eu gostaria de incorporar Uma biblioteca de montagem de dados que permite chamar um modelo ARMA. Suas postagens são realmente excelentes e têm uma grande quantidade de informações valiosas. Eu tentei olhar para o indicador diário csv, mas it8217s não estão mais acordados. Poderia ter uma cópia para inspecionar I8217m atualmente testando o código arma completo e quer saber como avaliar os resultados corretamente antes de passar para tentar implementar o componente GARCH. Adorei ler seu blog sobre isso. Utilizei a função alternativa auto. arima () em vez da sua função ARMAsearch (muito mais lenta e mais cara), mas essa deu backtests drasticamente diferentes e apresentou desempenho pior do que Buy-and-Hold. Ele não replicou seus resultados com base em seu ARMAsearch, mas, no entanto, conseguiu muitos lucros em torno da crise 821708, assim como o seu ARMAsearch fez, mas ainda não se compara realmente. Isso foi interessante para mim. Por enquanto estou lendo o código-fonte auto. arima () e comparando-o com o ARMAsearch. Parece que você fez uma pesquisa de grade auto. arima () faz uma pesquisa local (o que explica a velocidade). Posso perguntar quais tipos de hardware você está usando hoje em dia Você faz algum cálculo de GPU Olá, feliz que você goste meu blog. Para o meu uso, acho que as CPUs da Intel oferecem desempenho e paralelização suficientes. O hardware que uso é quad-core i7 com hyperthreading, o que o torna 8220almost8221 8-way. Em tal máquina, um backtest ARMAGARCH leva menos de um dia (se a minha memória estiver correta) por cerca de 50 anos de dados. Ele faz todo o trabalho para prever decisões on-close para um dia específico (ou seja, o trabalho necessário para se preparar para um dia de negociação) em aproximadamente algumas horas. Na verdade, você está certo, a função auto. arima usa um algoritmo diferente, que não analisa todos os resultados. Da minha experiência, it8217s não é direto para replicar 100 resultados entre pacotes. Especialmente quando se envolve a distribuição dos resíduos. Notei o mesmo quando, em algum momento, tentei brevemente o pacote de rugiscas. Oi Ivan, sou um novato nas finanças matemáticas. Eu estava apenas discutindo com meu professor sobre o uso do modelo ARMA na negociação real na semana passada. Eu achei o seu modelo de detalhe muito interessante. Então eu tento estudá-lo linha a linha. Tentei imprimir o erro padrão junto com a predição e descobriu que a magnitude do erro padrão era muito maior do que a predição. Eu estava pensando se isso colocaria muito risco na decisão individual, limitando o modelo a funcionar apenas em grande número de decisões, e talvez não fosse assim ao usar a estratégia por um curto período de tempo. A esperança pode ter sua idéia. Obrigado. Isso é um problema e já foi discutido em outros comentários. Se alguém não quiser usar esse método devido à falta de mérito estatístico, então seja ele. Uma abordagem alternativa seria desenvolver um sistema que use um método enquanto o 8220it funciona8221. Ei, ivannp, ótimo blog, obrigado. Eu tenho usado seu código para alguma pesquisa8230 você estaria disposto a publicar o código-fonte para criar a matriz do indicador Obrigado. Mclapply leva modelos, uma lista de todos os modelos (e cada modelo também é uma lista, portanto, temos uma lista de listas) queremos calcular como seu primeiro argumento, então ele chama garchAutoTryFit para cada modelo individual desta lista, passando O modelo como o primeiro argumento do it8217s. A seguinte linha adiciona um novo modelo à lista em garchAuto: modelslength (models) 1 list (orderc (p, q, r, s), distdist) Cada modelo também é uma lista, contendo a ordem (acessada via ordem) e a Distribuição (acessada via dist). Agora eu sinto que é um pouco de uma maneira feia de fazer as coisas, mas isso faz o trabalho. :) Ok8230 que faz sentido para mim, mas o que realmente está construindo o ll garchAutoTryFit e o garchAuto estão permitindo otimizar os parâmetros para a previsão Você faz com garchfit8230. Sei que o 8220data8221 ou o 8220xx8221 no código são as séries de retorno, mas eu não consigo ver como executar as funções sem uma inicial ll. Obrigado será construído dentro do garchAuto, usando min. order, max. order e alguns outros parâmetros passados ​​para a rotina pelo usuário. Se min. order for (0,0,1,1) e max. order for (5,5,1,1), garchAuto constrói um ll que contém todas as variações possíveis dentro desses limites, por exemplo, conterá (0 , 0,1,1), (0,1,1,1), etc. Por padrão, a rotina escolhe o melhor modelo dentro (0,0,1,1) e (5,5,1,1). Ok8230 obrigado. Eu tenho tentado executar o garchAuto usando uma série de retorno como a entrada xx, mas só recebo o blog NULL Muito informativo, estou planejando usar uma estratégia similar usando auto. arima (), sem sucesso até agora, apenas começando. 8211 Qual foi o seu CAGR aproximado usando apenas modelos ARIMA sem o Garch 8211 Como você decide qual posição tomar: você compra assim que a previsão no retorno é positiva e vende se 8211 negativo ou você implementa limiares mínimos (para evitar Vendendo ou comprando se a diferença for muito pequena) Em caso afirmativo, como você define esses limiares 8211 Você poderia citar algumas das razões pelas quais você não calcula a série original. É uma condição crítica IYO 8211. Você consegue sobre como eu poderia Prossiga com a minha estratégia (atualmente) mal sucedida auto. arima () ARIMA sem o GARCH não é muito bom no SPY. Nem em outros ETFs. Mesmo com o GARCH, precisa de trabalho adicional para encontrar algo comercial. Eu suponho que eu sou capaz de executar os negócios no final, o que é realizável na vida real. Mais fácil é trocar o futuro (aberto 24 7), porém é preciso fazer um teste adequado. ARMA GARCH é usado em séries temporárias estacionárias. Os retornos são estacionários, os preços de fechamento não são. Eu sou um comerciante novato olhando para aplicar um diploma em estatísticas para o mundo dos mercados financeiros. Eu vi que você não queria compartilhar o código alguns anos atrás, mas se houver algum script de formulário, eu poderia olhar e usar para aprender melhor R, então eu ficaria mais do que grato se você pudesse enviá-lo no meu caminho. Obrigado novamente pelo post, foi excelente. Deixe uma resposta Cancelar resposta

No comments:

Post a Comment